我有4个屏幕,用户可以在其间滑动。我使用ViewPager并在instantiateItem()
中膨胀ViewGroup。如果ViewGroups的所有子项都是轻量级,那么一切都很完美,但是当在每个屏幕上添加背景和几个图像时,滑动动画会变得不稳定。
我做的第一件事是优化它是制作视图层次结构的快照,并用单个ImageView显示快照替换整个视图层次结构。它表现良好,滑动很流畅,但在某些设备上它会导致OutOfMemoryError
。
我认为问题是ViewPager加载了当前的idx+1
和idx-1
页面,如果显示的是1920 x 1200px
(华硕Transformer TF700),并且每个px都支持透明度,那么每个页面1920x1200x4 = 9MB
,如果加载了3个页面9x3 = 27MB
,则&gt; <{1}}(堆限制),16MB
将被抛出。
如何在不导致错误的情况下显示这4页并同时滑动平滑?
答案 0 :(得分:1)
您是否考虑使用BitmapFactory.decodeResource(资源res,int id,BitmapFactory.Options opts)从java程序填充图像 并将opts.inSampleSize设置为值&gt; 1?
这应该提供更轻的图像,因此消耗更少的内存。