作者归档:heisedeyueya

AndroidManifest中的meta-data读取不到

问题背景

昨天有同事出现很奇怪的问题,就是AndroidManifest中的meta-data值读取不到了,简直就像灵异事件,以前都没有问题,他把问题给我描述之后我觉得不可能。于是去看了一下他的代码。一眼就找出了病根。他的代码如下。

问题分析 继续阅读

如何计算Bitmap图片在Android系统中占用的内存大小

Android系统内存是非常有限的,一定要好好珍惜,不要等到OOM才追悔莫及。Android app中最占用内存的也是就图片了。那么我们就有必要弄清楚,Bitmap图片在Android中占用了多少内存。

图片在内存中的存储模型

我们可以将图片在内存中的存储模型想象成一个长方体,它的长、宽、高分别表示图片的宽度、高度、颜色深度。那么Bitmap图片在内存中的大小计算就变成了计算长方体的体积:Bitmap Memroy size = width * height * 颜色深度,那么这里的颜色深度是什么意思呢?

rectengle

色彩存储

我们知道ARGB指的是一种色彩模式,里面A代表Alpha,R表示Red,G表示Green,B表示Blue,所有的可见色都是由红绿蓝组成的,所以红绿蓝又称为三原色,每个原色都存储着所表示颜色的信息值,下表中对四种颜色模式的详细描述,以及每种色彩模式占用的字节数(也就是颜色深度值

颜色深度简单说就是最多支持多少种颜色。一般是用“位”来描述的。

模式 描述 占用字节
Bitmap.Config.AlPHA Alpha由8位组成 1B
Bitmap.Config.ARGB_4444 4个4位组成16位,每个色彩元素站4位 2B
Bitmap.Config.ARGB_8888 4个8为组成32位,每个色彩元素站8位 4B
Bitmap.Config.RGB_565 R为5位,G为6位,B为5位共16位,没有Alpha 2B

实例讲解 继续阅读

Drawable与Bitmap相互转化

我们有时候会遇到Drawable转化为Bitmap或者Bitmap转化为Drawable的情况,那么应该如何转化呢?其实非常简单。

Drawable转化为Bitmap

Drawble转Bitmap有两种方法,第一种方法较为灵活,可以调整图片的质量,第二种方式相对简单。看下面的代码:

方法一

方法二

Bitmap转化为Drawable

如何读取AndroidManifest中的meta-data

我们经常会在AndroidMainfest.xml中配置meta-data,来记录一些配置项,并且分为两种情况,一种是在Application标签中meta-data,一种是在Activity中的meta-data,如下面的代码。

为什么UMENG_KEY要用16进制表示而不是10进制的数字串呢?此处有一坑

读取Activity中的meta-data 继续阅读

Volley如何加载网络图片

在应用程序开发中图片下载是非常常见的操作,Volley提供了不同的图片下载方式。Volley也提供了透明的图片缓存,也可以灵活的使用自己的图片缓存。

Volley使用ImageRequest加载

和其他的Requst类型一样,它以URL作为参数然后返回Bitmap对象到主线程。

第二,三个参数分别表示图片的maxWidth和maxHeight,第四个参数用来指定图片的质量,然后ImageRequest会通过这几个参数来解析图片,调整图片的质量等操作

ImageRequest源码 继续阅读