Android支持32bit的颜色,但是真正显示的时候(无论是模拟器还是手机),都是以16bit的颜色显示出来的。一般电脑液晶显示器为18bit,并且通过颜色抖动来模拟32bit真彩色。而Android所显示的内容都为16bit。对于bitmap中的一个pixel来说,会以RGB565的方式来转换。而对于drawable中的24bit png,大面积的同色区域会被转为不同颜色pixel的点阵以模拟24bit。所以,如果有自行创建的Bitmap和drawable无缝对接的时候,就会出现色差。解决方法:
1. 在Bitmap中使用16bit颜色,并且选择Android颜色索引表中的颜色(即Android转成RGB565之后的颜色,例如RGB206, 203, 206)
2. 对于png文件,至少要有一个像素为透明像素,这样可以迫使Android在转成Bitmap的时候不会全部转成RGB565,同时在PNG文件中使用的颜色也是Android颜色索引表中的颜色
1. 在Bitmap中使用16bit颜色,并且选择Android颜色索引表中的颜色(即Android转成RGB565之后的颜色,例如RGB206, 203, 206)
2. 对于png文件,至少要有一个像素为透明像素,这样可以迫使Android在转成Bitmap的时候不会全部转成RGB565,同时在PNG文件中使用的颜色也是Android颜色索引表中的颜色
解决方案 »
- 为Button添加事件监听器时一直报错,求帮忙
- 怎么获取后台运行的Service实例?
- android sdk 下载
- 怎么将一个文件夹下的所有内容(文件/图片)打包到Android镜像中
- 切换到竖屏时调用两次OnConfigurationChanged,为什么要设计成这样呢
- Tab下的button和ListView都没反应
- 请问如何获取系统语言列表
- 各位牛人,如何才能让自己的照相应用被微信调用?
- NDK开发的时候遇到error: undefined reference to 错误
- android未来的路
- jni 接收网络视频数据. 并解码 ,使用使用什么方式通知界面更新 ?
- Android如何适配不同品牌的手机呢?需要移植吗?
这样应该是没问题的,不过你怎么知道不是32bit的而是16的呢?