Android图片的调试
原创
©著作权归作者所有:来自51CTO博客作者达帮主的原创作品,请联系作者获取转载授权,否则将追究法律责任
应用最大的内存限制
Caused by: java.lang.OutOfMemoryError: bitmapsize exceeds VM budget 加载大图片两次 报的异常
VM heap: 指定每个应用最大的内存堆大小 超过了该设置值就会报OOM
1. Android是一个基于虚拟机的系统,虚拟机会给每个程序分配一个最大执行大小,通常系统默认为128M(官方默认),
但是小内存手机往往设置为32M或者48M才是最好的。因为如果应用内存占用过大,可能会导致应用程序也会表现出卡顿或者应用崩溃现象。
2. Android的 java程序为什么容易出现OOM
这个是因为Android系统对dalvik的vmheapsize作了硬性限制,当java进程申请的java空间超过阈值VMheap时,就会抛出OOM异常(这个阈值可以是48M、24M、16M等,视机型而定)
加载大图片分析:
图片的大小 > 屏幕的大小
图片的宽度/屏幕的宽度 =大于1
图片的高度/屏幕的高度 =大于1
成比例缩放的时候 只需要一个比例值 应该取最大比例值 兼容
创建图片拷贝的步骤
//1.加载原来的图片
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.boy);
//2.购买一张画纸
Bitmap bitmap=Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Config.RGB_565);
//3.创建画板 将画纸粘贴上来
Canvas canvas=new Canvas(bitmap);
//4.购买画笔
Paint paint=new Paint();
//paint.setAntiAlias(aa) 消除锯齿
//5.开始作画
Matrix matrix=new Matrix();
matrix.setScale(1.0f, 1.0f);
canvas.drawBitmap(bmp, matrix, paint);
//6. 将新的图片加载到mIv
mIv.setImageBitmap(bitmap);