android 屏幕自适应问题
来源:互联网 发布:淘宝订单险怎么收费 编辑:程序博客网 时间:2024/04/25 09:09
这是我最近碰到的一个比较严重的问题,一直不能完美的解决。实在无奈之下,发帖到csdn android版提了一个问题,没想到惊动了版主,给了我很大的帮助,让我可以完美的解决类似问题。决定以后蹲点csdn android论坛了。呵呵。
问题描述:
在WVGA 854 设备上,图片大小自适应变化得到的是错误结果,在我的项目上就是 图片总会缩小。
比如说 854X90的图片在经过自适应的时候,图片宽度,高度会缩小1.5倍,这样就会导致显示的时候不能占满全屏。
问题分析:
我发现图片读取时正常的,是854x90,density 240也没问题,和真机时一致的。但在一句代码之后,density变成了160,高度,宽度同时缩小1.5倍。 这句代码就是 BitmapDrawable drawable = new BitmapDrawable(bitmap);
很快我发现这是因为density发生了变化,android会自动根据density来对图片进行自适应变化,从240 变 为 160,刚好是1.5倍,所以宽度,高度也相应的缩小1.5倍。
所以我确定问题是出在density上了,事实证明我的判断也是对的。
解决方案:
在查阅android开发文档后,发现从android 1.6开始才增加的根据density来自适应变化功能,而我们项目的api使用的是android 1.5。
1.5中没有提供相应的API来根据真机的density来自适应,而是使用了一个默认的density 160. 这也就解释了为什么我每次经过BitmapDrawable的时候density变成了 160.
在1.6文档说明中 我们项目中使用的api已经被deprected,而提供了根据resource来决定density的API接口
这是我们项目中使用的构造函数
BitmapDrawable(Bitmap bitmap)BitmapDrawable(Resources, Bitmap)
to ensure that the drawable has correctly set its target density.
查阅API doc之后,我采用了下面这个构造函数
BitmapDrawable(Resources res, Bitmap bitmap)
这个api说明中明确说了,会跟根据真机的density来设置初始target density。
这样BitmapDrawable就会根据正确的density来对图片进行自适应变化。
调用这个构造函数中的第一个参数很容易获得,直接调用activity.getResources()就可以获得,第二个参数就是我们原始的map。
就此,这个问题成功解决。
大家有疑问的可以留言。
- android 屏幕自适应问题
- android:屏幕自适应问题
- Android屏幕自适应的问题
- Android图片自适应不同分辨率屏幕问题
- 关于android 的屏幕自适应问题
- Android 屏幕自适应问题和9切图
- Android 解决屏幕上自适应问题
- Android图片自适应不同分辨率屏幕问题
- android 应用开发屏幕自适应问题
- 网页屏幕自适应问题
- android屏幕自适应研究
- [Android]屏幕自适应布局
- android 屏幕自适应
- android屏幕自适应研究
- android:屏幕自适应
- android屏幕自适应
- android 自适应屏幕
- android屏幕自适应
- 牛人博客地址
- jquery常用的插件
- linuxC程序中获取shell脚本输出
- Eclipse的编辑器查看的相互作用(1)
- sql 遍历二叉树所有子节点
- android 屏幕自适应问题
- 软件工程视频学习笔记(七)
- Hashing
- java.io.FileNotFoundException: class path resource [META-INF/xfire/services.xml] cannot be opened because it does not exist
- 复制文件夹内所有文件
- c++ 关键字
- Failed to load class "org.slf4j.impl.StaticLoggerBinder"
- 解决"Automation License Manager has not been started"
- WINCE 串口