0
点赞
收藏
分享

微信扫一扫

Android图片的调试


应用最大的内存限制

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);

 

举报

相关推荐

0 条评论