BitMap图像缓存
屏幕分辨率等于√(长的像素数量²+宽的像素数量²)/对角线长度。它的含义代表一英寸还有的像素个数。屏幕上的一个点代表一个像素(像素单位为px)。如果同样尺寸的手机屏幕一个是640*480(1号机) 一个是1600*1200(2号机)。那么展示一个100*100px的图像,那么在1号机展示的图像大小将要比2号机展示的更大。同时也要比2号机展示的更加粗糙。同样尺寸的手机显示的像素个数越多也就是px越多,那么也就是分辨率越高,那么显示效果一定就是越细腻。
在Android
里面获取一个Bitmap的内存大小的话可以通过Bitmap.getAllocationByCount()
方法获取,当然这是在api>=19
的时候才出来的新方法。以前是通过getByteCount()
。(这部分知识是在看Glide源码的时候,看到LruBitmapPool
类的时候,了解到这个类是用来存放我们加载进来的bitmap的,当然不是任何大小的bitmap他都做缓存,不然的话很大的图片也缓存那么手机的内存一定直接爆炸。在每次put的时候他会先调用类SizeStrategy.getSize(bitmap)
方法获取这个bitmap的大小做判断)。
1 | // 获取一个bitmap的占用的内存大小 |
更多案例可以看这篇博客:Android中一张图片占据的内存大小是如何计算的
实现一个高斯模糊:封装个 Android 的高斯模糊组件