android 屏幕自适应问题
2010-08-26 11:21
330 查看
这是我最近碰到的一个比较严重的问题,一直不能完美的解决。实在无奈之下,发帖到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接口
这是我们项目中使用的构造函数
查阅API doc之后,我采用了下面这个构造函数
这个api说明中明确说了,会跟根据真机的density来设置初始target density。
这样BitmapDrawable就会根据正确的density来对图片进行自适应变化。
调用这个构造函数中的第一个参数很容易获得,直接调用activity.getResources()就可以获得,第二个参数就是我们原始的map。
就此,这个问题成功解决。
大家有疑问的可以留言。
问题描述:
在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) This constructor is deprecated. Use BitmapDrawable(Resources, Bitmap) to ensure that the drawable has correctly set its target density. |
BitmapDrawable (Resources res, Bitmap bitmap) Create drawable from a bitmap, setting initial target density based on the display metrics of the resources. |
这样BitmapDrawable就会根据正确的density来对图片进行自适应变化。
调用这个构造函数中的第一个参数很容易获得,直接调用activity.getResources()就可以获得,第二个参数就是我们原始的map。
就此,这个问题成功解决。
大家有疑问的可以留言。
相关文章推荐
- 暂时解决了Android webview组件中显示SVG自适应屏幕问题
- [UI控件问题] android屏幕自适应 android 属性
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- Android 中 WebView 与 js 简单交互实现图文混排效果,解决图片自适应屏幕与查看大图问题
- [UI控件问题] android屏幕自适应 android 属性
- android 屏幕自适应问题
- android:屏幕自适应问题
- android屏幕分辨率自适应问题
- 关于android 的屏幕自适应问题
- [UI控件问题] android屏幕自适应 android 属性
- Android 屏幕自适应问题和9切图
- [UI控件问题] android屏幕自适应 android 属性
- [UI控件问题] android屏幕自适应 android 属性
- Android中VideoView播放视频不能充满屏幕以及视频上的view与视频不同步显示的问题
- Android控件自适应屏幕大小
- Android自适应屏幕大小和layout布局(横屏|竖屏)
- Android屏幕分辨问题
- 获取图片、屏幕像素并纠正bufferedimage导入失败的问题Ps:手机端android的图片和屏幕像素获取正确方式
- Android屏幕自适应(动态学习)
- unity3D android游戏屏幕分辨率问题【转http://blog.csdn.net/jeksonal/article/details/8501549】