Grazie a Schermvlieger per chiedere this domanda su anddev.org,uso ottimale dei BitmapFactory.Options.inSampleSize per la velocità
che sto semplicemente copiando la sua domanda a così come nessuno ha risposto sull'altro sito e sto anche affrontando lo stesso problema.
Mi chiedevo quale sarebbe l'uso ottimale di BitmapFactory.Options.inSampleSize
per quanto riguarda la velocità di visualizzazione dell'immagine.
La documentazione menzioni utilizzando i valori che sono potenze di 2, quindi sto lavorando con 2, 4, 8, 16, ecc
Le cose che mi chiedo circa sono:
- Devo ricampionare verso il basso alla dimensione più piccola che è ancora più grande della risoluzione dello schermo, o dovrei campionare fino alle dimensioni quel tanto che basta per evitare un
OutOfMemoryError
? - Come si calcola la dimensione massima di un'immagine che potrebbe ancora essere visualizzata senza esaurire la memoria? Anche la profondità del colore dell'immagine gioca un ruolo e la profondità del display?
- È efficace visualizzare le immagini tramite due meccanismi (
BitmapFactory
per file di grandi dimensioni,setImageURI()
per quelli più piccoli) Sto utilizzando unImageSwitcher
a proposito. - Potrebbe aiutare a creare
Bitmap
,BitmapFactory.Options
einTempStorage
all'inizio dell'applicazione o crearli solo al volo, quando necessario?
Quando si dice che "ridimensionare le immagini al momento del disegno è estremamente costoso" questo include anche options.inSampleSize? – kape123
inSampleSize viene utilizzato per ridimensionare le immagini in fase di caricamento, non in fase di disegno. È un ottimo modo per ordinare le immagini. –
Stiamo usando ARGB_8888, che sta producendo un'immagine molto sfocata su Samsung Galaxy Note 2, ma ha funzionato bene su altri dispositivi, portarlo su ARGB_4444 sta bloccando l'app su Samsung Galaxy Note 2 e Pad 3110, a causa di outOfMemoryError. Puoi aiutarci a risolvere questa cosa. –