GridView内存泄露以及显示自定义类型的资源

来源:互联网 发布:显示iphone6s在线软件 编辑:程序博客网 时间:2024/05/16 07:36

问题一:GridView直接加载大量本地资源图片时,发生内存不足,超过了图片栈最大内存8M。
问题二:GridView不能显示Bitmap等资源
解决方法一:避免直接加载资源,配置BitmapFactory的缩放比例,配置等参数,然后通过decodeResource加载资源,大大降低内存占有;
也可以通过openRawResource打开资源输入流,在生成Bitmap,这种方法的优势是openRawResource是原生方法,内存占用更低

public Bitmap readBitMap(Context context, int resId) {        BitmapFactory.Options opt = new BitmapFactory.Options();        opt.inPreferredConfig = Bitmap.Config.RGB_565;        opt.inSampleSize = 4;        //获取资源图片        return BitmapFactory.decodeResource(getResources(),resId,opt);    }

解决方法二:GridView的机制只能处理字符串,布尔值,Integer类型,幸运的是,GridView对外提供了ViewBinder抽象类,用于拦截默认的处理操作。

simpleAdapter.setViewBinder(new SimpleAdapter.ViewBinder() {            @Override            public boolean setViewValue(View view, Object data, String textRepresentation) {                if (view instanceof ImageView && data instanceof Bitmap) {                    ((ImageView) view).setImageBitmap((Bitmap) data);                    return true;                }                return false;            }        });
0 0
原创粉丝点击