Android ListView:内存不足异常

这个问题在这里已经有了答案:

  • 将图像加载到位图对象时出现奇怪的内存不足问题40个答案

  • 使用此功能从SD卡路径解码图像

    public Bitmap decodeFile(String path) {
            try {
                // Decode image size
                BitmapFactory.Options o = new BitmapFactory.Options();
                o.inJustDecodeBounds = true;
                BitmapFactory.decodeFile(path, o);
                // The new size we want to scale to
                final int REQUIRED_SIZE = 70;
    
                // Find the correct scale value. It should be the power of 2.
                int scale = 1;
                while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE)
                    scale *= 2;
    
                // Decode with inSampleSize
                BitmapFactory.Options o2 = new BitmapFactory.Options();
                o2.inSampleSize = scale;
                return BitmapFactory.decodeFile(path, o2);
            } catch (Throwable e) {
                e.printStackTrace();
            }
            return null;
    
        }
    

    如何使用?

    holder.picView.setImageBitmap(decodeFile(act.getimage()));
    

    注意:

    您可以根据需要更改REQUIRED_SIZE值。


    这是一个很常见的错误。 您为每个列表元素使用大图像,而不是使用小拇指...

    我使用一个叫做毕加索的库来处理图像,查看它。

    检查这个例子。

    Picasso.with(YOUR_CONTEXT).load(new File(YOUR_PATH)).fit().centerCrop().into(YOUR_VIEW);
    

    使用android-query在listview中显示图像。

    你可以在这里找到android-query的教程

    我希望它有帮助。

    链接地址: http://www.djcxy.com/p/93095.html

    上一篇: Android ListView: out of memory exception

    下一篇: How to reduce memory consumption in android