重视图层次结构的优化

时间:2014-05-09 18:46:24

标签: android performance android-viewpager android-animation

我有4个屏幕,用户可以在其间滑动。我使用ViewPager并在instantiateItem()中膨胀ViewGroup。如果ViewGroups的所有子项都是轻量级,那么一切都很完美,但是当在每个屏幕上添加背景和几个图像时,滑动动画会变得不稳定。

我做的第一件事是优化它是制作视图层次结构的快照,并用单个ImageView显示快照替换整个视图层次结构。它表现良好,滑动很流畅,但在某些设备上它会导致OutOfMemoryError

我认为问题是ViewPager加载了当前的idx+1idx-1页面,如果显示的是1920 x 1200px(华硕Transformer TF700),并且每个px都支持透明度,那么每个页面1920x1200x4 = 9MB,如果加载了3个页面9x3 = 27MB,则&gt; <{1}}(堆限制),16MB将被抛出。

如何在不导致错误的情况下显示这4页并同时滑动平滑?

1 个答案:

答案 0 :(得分:1)

您是否考虑使用BitmapFactory.decodeResource(资源res,int id,BitmapFactory.Options opts)从java程序填充图像 并将opts.inSampleSize设置为值&gt; 1?

这应该提供更轻的图像,因此消耗更少的内存。