安卓开发中Bitmap的内存优化

最近在做一个项目,需要用到listview显示用户列表。每个item由iamgeview和两个textview组成。Imageview是使用setImageBitmap()去设置图片的。
在使用Bitmap的时候,我们需要特别注意内存上的优化。有以下几个点需要大家注意:
1.如果知道bitmap什么时候不需要使用到,应及时将其释放掉。

if(!mBitmap.isRecycle()){
    mBitmap.Recycle();
    mBitmap = null;
}

2.当图片源大小大于要显示的尺寸大小,在创建时应将其进行压缩。

    BitmapFactory.Options op = new BitmapFactory.Options();
    op.inJustDecodeBounds = true;
    Bitmap bmp = BitmapFactory.decodeFile(path, op); //获取尺寸信息
    //获取比例大小
    int wRatio = (int)Math.ceil(op.outWidth/DISPLAY_WIDTH);
    int hRatio = (int)Math.ceil(op.outHeight/DISPLAY_HEIGHT);
    //如果超出指定大小,则缩小相应的比例
    if(wRatio > 1 && hRatio > 1){
        if(wRatio > hRatio){
          op.inSampleSize = wRatio;
        }else{
          op.inSampleSize = hRatio;
        }
     }
     op.inJustDecodeBounds = false;
     bmp = BitmapFactory.decodeFile(path, op);

这样一来,假设原本图片大小为2M,而你只需要50px*50px,那你可以省下大笔内存!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值