0

我有一个 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;
        }
4

3 回答 3

0

您应该遵循以下准则:http: //developer.android.com/training/displaying-bitmaps/index.html

要有效地显示图像,请遵循这些说明,它将避免内存不足异常。

于 2013-09-30T17:39:23.123 回答
0

首先,您使用ViewPager不正确,设置它并将其传递给侦听器,setOnPageChangeListener然后当页面更改时,更改图像视图。

然后在您的页面侦听器中,定义onPageSelected获取位置并加载图像并将其设置为ImageView.

不要预加载所有 73 张图片,即使每张 140KB 超过 10MB,将其添加到运行应用程序的其余开销中,您可以轻松超过旧手机的 16MB 限制。想出一个更聪明的预加载方法,也许只是保持上一张和下一张图片的缓存,或者查看这个延迟加载库

于 2013-09-30T17:39:37.210 回答
0

我不得不补充:

机器人:大堆=“真”

到我的应用清单!

于 2013-10-02T06:55:01.837 回答