我有一个viewpager,需要在其中填充一个包含图像的布局,我有73个图像,我正在从pics []一个int数组列表中加载它们,所以在滑动viewpager看到这些图像时,我正在进行第7张图像内存不足我的代码是:
public Object instantiateItem(View collection, int position) {
inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.image_view_layout, null);
ViewHolder holder = new ViewHolder();
holder.img_view = (ImageView) view.findViewById(R.id.img_pager);
//img_v=(ImageView)view.findViewById(R.id.img_pager);
int count=NUM_VIEWS-1;
view.setTag(holder);
holder.img_view.setImageResource(pics[count-position]);
((ViewPager) collection).addView(view, 0);
return view;
}
答案 0 :(得分:0)
您应遵循以下准则: http://developer.android.com/training/displaying-bitmaps/index.html
要有效地显示图像,请遵循这些说明,以避免内存不足
答案 1 :(得分:0)
首先关闭所有使用ViewPager
的错误,设置它并将其传递给setOnPageChangeListener
然后当页面更改时,更改图像视图。
然后在您的页面侦听器中,定义onPageSelected
以获取位置并加载图像并将其设置为ImageView
的资源。
不要预先加载所有73张图像,即使是每张超过10MB的140张图像,将其添加到运行应用程序的其余开销中,您可以轻松超过旧手机上的16MB限制。找出一种更智能的预加载方式,可能只是保持上一个和下一个图像的缓存,或者查看这个lazy loading library。
答案 2 :(得分:0)
我不得不补充道:
机器人:largeHeap = “真”
到我的应用程序清单!!