Otimizando a paginação entre o ImageViews no Android?
-
19-09-2019 - |
Pergunta
Para o aplicativo em que estou trabalhando atualmente, criei algo como ImageSwitcher
Para várias imagens (imagine o iPhone's UIScrollView
com a paginação ativada).
No começo, eu codifiquei alguns ImageViews
e carregou seus recursos desenhados na criação/inflação, mas depois de alguns ajustes (e o que eu pensei em melhorias), reduzi as visualizações necessárias para 3, dos quais 2 são ImageViews
usado para exibir a página atual e animar entre a página atual e a nova.
Com essa mudança, comecei a usar setImageResource
/setImageDrawable
Para o carregamento dinâmico da nova imagem no meu 2 ImageViews
Antes de deslizar através das páginas (estou usando arquivos PNG, dimensionados para exibições HVGA).
Para minha decepção, o desempenho piorou, na medida em que sentir um pouco de atraso ao deslizar mais rápido pelas páginas. Uma rápida olhada em TraceView
revelou que 17,4% do tempo total ao usar o aplicativo, mais de 5 vezes mais do que o próximo método pesado, foi consumido de BitmapFactory.nativeDecodeAsset
, chamado pela minha configuração dinâmica de recursos desenhados.
Estou pensando em maneiras de contornar isso e quero fazê -lo da melhor maneira possível, para que quaisquer sugestões sejam bem -vindas.
Solução
Em qual formato você tem as imagens?
O Android funciona nativamente com imagens RGB565; portanto, se você puder converter suas imagens para esse formato, a decodificação será muito mais rápida.