Ottimizzazione di paging tra ImageViews in Android?
-
19-09-2019 - |
Domanda
Per l'applicazione Attualmente sto lavorando, ho creato qualcosa di simile ImageSwitcher
per immagini multiple (immaginare UIScrollView
di iPhone con paginazione abilitato).
In un primo momento, ho duro codificati alcuni ImageViews
e caricato le loro risorse disegnabili sulla creazione / inflazione, ma dopo alcune modifiche (e quello che pensavo fossero miglioramenti), ho ridotto i punti di vista necessari a 3, di cui 2 ImageViews
utilizzato per la visualizzazione della pagina corrente e l'animazione fra le pagine corrente e nuovo.
Con questa modifica, ho cominciato a usare setImageResource
/ setImageDrawable
per il carico dinamico della nuova immagine nella mia 2 ImageViews
prima di scivolare attraverso le pagine (sto usando i file PNG, dimensionati per i display HVGA).
Per la mia delusione, la performance ha ottenuto peggio, fino al punto di sentirsi un po 'di ritardo quando si fa scorrere più velocemente attraverso le pagine.
Una rapida occhiata in TraceView
ha rivelato che il 17,4% del tempo totale, mentre si utilizza l'applicazione, oltre 5 volte più che il prossimo metodo di pesante, è stato consumato da BitmapFactory.nativeDecodeAsset
, chiamato dalla mia impostazione dinamica della risorsa drawable.
Sto pensando di modi per aggirare questo, e voglio farlo nel miglior modo possibile, in modo da tutti i suggerimenti sono i benvenuti.
Soluzione
In quale formato avete le immagini?
Android funziona in modo nativo con le immagini RGB565, quindi se è possibile convertire le immagini in questo formato, la decodifica sarà molto più veloce.