[精]android图片加载机制和缓存机制 【待丰富中】

1: android 如果之前加载过这个照片,那么是会复用的,如果没有,那么会创建的

图片的大小的计算像素1024*1024的话,内存所占用的大小是1024*1024*4(这里面的4,就是我们rgb的那个值+透明度),这里就是4MB, 注意这里是大B

 

2: 图片内存的占用空间和像素有关是一个定值,多大的像素占用的内存值是固定的,但是磁盘的占用空间是不一样的,相同的像素占用的磁盘空间不一定相同,例如我们的桌面的大小都是一样的,但是桌面的不同的截图,它们的大小就是不一样的,这个和里面的颜色等等都是有关系的

 

3: android 的图片的处理包括三个部分:

3.1:图片的加载,这里面涉及到了就是图片的分辨率的适配,

我们没有必要给一个100px*100px的图片去加载一个1024*1024像素的图片,需要将1024*1024的分辨率调整到100*100,原来1024*1024所占用的内存空间是4MB,

现在40*40的占用的40KB, 是原来的100分之一的内存,节省了很多内存啊,

如果图片是很多,例如达到了18个,那么我们节省的内存空间,就接近70MB,这个是相当大的空间了

public void showPic(View view) {

    ImageView imageView = (ImageView) findViewById(R.id.imageView);

    BitmapFactory.Options options = new BitmapFactory.Options();

    Resources resources = getResources();

    //可以查看一下,原始的大小,注意,这个原始的大小和我们放的文件夹也是有关系的。
    Bitmap bitmap = BitmapFactory.decodeResource(resources, R.mipmap.big, options);
    int widthOld = bitmap.getWidth();
    int heightOld = bitmap.getHeight();

    //这里我们固定采样率
    options.inSampleSize = 32;

    bitmap = BitmapFactory.decodeResource(resources, R.mipmap.big, options);

    int width = bitmap.getWidth();
    int height = bitmap.getHeight();
    //可以查看我们的内存占用多少

    int byteCount = bitmap.getByteCount();
    Toast.makeText(this,"heigthOld = " + heightOld + " widthOld = " +widthOld + "heigth = " + height + " width = " +width + " byteCount = " + byteCount,Toast.LENGTH_LONG).show();


    imageView.setImageBitmap(bitmap);


}

3.2 图片的缓存,这个其实说白了就是为了给客户省流量,我们其实可以直接从网络来下载的,但是考虑到客户的流量,我们采用了图片的缓存

3.3 图片的

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值