Android屏幕适配解析
来源:互联网 发布:java编程大赛题目 编辑:程序博客网 时间:2024/05/20 03:47
1、屏幕支持API
是Android 3.2值得重点关注的内容。google在此专门对平板的屏幕支持进行了扩展。另外,增加对高分辨率电视显示的支持。由此,可以看出,未来的Android除了布局智能机和平板外,同时看好智能电视以及相关的大屏幕显示设备。为了支持大屏幕和高分辨率,Android 3.2引入了质量资格,我将其理解为为了更好的在目标屏幕上进行界面布局,而引入的用来指定显示空间门槛。进而引出另外两个概念:smallestWidth(swNNNdp)、屏幕的width(wNNNdp)和height(hNNNdp)。前者指的是屏幕可绘制区域的宽度和高度中最小的那个(会把电视的高度当做宽度来使用),是屏幕的固定属性,与显示方向无关(不去关心屏幕的显示方向)。后者指的就是屏幕的可绘制区域,二者随着屏幕的显示方向不同,进行相应的切换。Android 3.2中可用的新的质量资格使用示例:
- res/layout/main_activity.xml # For phones
- res/layout-sw600dp/main_activity.xml # For 7” tablets
- res/layout-sw720dp/main_activity.xml # For 10” tablets
- res/layout-w600dp/main_activity.xml # Multi-pane when enough width 宽度大于600DP
- res/layout-sw600dp-w720dp/main_activity.xml # For large width
例二:宽度1280*800的平板
在资源:value-w1280dp,value-w800dp,时,横屏下使用value-w1280dp的资源,竖屏使用value-w800dp的资源。
在资源:value-sw800dp,value-sw1080dp时,横屏下使用value-sw800dp的资源,竖屏下仍然使用value-sw800dp的资源。
在上诉四中资源同时存在,则优先采用sw资源,value-sw800dp
有些电视设备对于sw和w的支持并不是很好,比如联想电视,1920*1080,mdpi的设备,当values-sw1080、values-sw1080-mdpi、values-sw1080-hdpi同时存在时,会默认采用values-sw1080-hdpi的值,在只有values、values-mdpi、values-hdpi时,会采用values-mdpi下面的值。
建议:具体的设备适配的时候还是先测试下采用什么下面的值。
- 320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
- 480dp: a tweener tablet like the Streak (480x800 mdpi).
- 600dp: a 7” tablet (600x1024 mdpi).
- 720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
mdpi时1像素=1dp,; hdpi时,1.5像素=1dp
获取屏幕像素和dp的方法。
TextView t = new TextView(this); t.setText("分辨率:"+getString(R.string.test)); // 方法1 Android获得屏幕的宽和高 int screenWidth; int screenHeight; WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); screenWidth = display.getWidth(); screenHeight = display.getHeight(); // 方法2 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); //获得手机的宽度和高度像素单位为px String str = "\n 方法1 手机屏幕分辨率为:" + screenWidth +" * "+ screenHeight + "/n方法2 手机屏幕分辨率为:" + dm.widthPixels +" * "+ dm.heightPixels; final float scale = this.getResources().getDisplayMetrics().density; t.setText(t.getText()+str + "\n密度:"+scale +"dip:"+px2dip(this, screenWidth)); setContentView(t);
如果布局采用layout-sw720dp ,layout-sw1280dp等根据屏幕的分辨率来适配的,则布局属性应采用px像素值来决定而不是采用dp单位
如果布局采用layout-hdpi,layout-mdpi,layout-ldpi等根据屏幕的dpi来适配的,,则布局属性应采用dp单位。
更多的请参考:http://developer.android.com/guide/practices/screens_support.html#density-independence
- Android屏幕适配解析
- Android屏幕适配解析
- Android屏幕适配解析
- 【屏幕适配】Android屏幕适配解析
- 【屏幕适配】Android 全方位解析屏幕适配问
- Android屏幕适配及DisplayMetrics解析
- Android屏幕适配及DisplayMetrics解析
- Android关于屏幕适配的相关重要概念解析
- 【Android】屏幕适配
- android屏幕适配
- android屏幕适配
- android 屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- Android屏幕适配
- android 屏幕适配
- Android屏幕适配
- 程序人生之项目团队那些人与事(5)
- 基于visual Studio2013解决C语言竞赛题之1032平方和
- 查看sql Server监听端口方法
- Android获取手机的当前时间和获取时间的各种不同的格式
- 面试编程题拾遗(06) --- 打印n对括号的全部有效组合
- Android屏幕适配解析
- kohana还是路由route问题
- 安卓中,当activity处于不可见时将立即消毁
- javaScript获取元素位置以及元素页面大小总结
- Nginx 源码编译
- lua table 基本使用
- 费茨定律的另一面
- 建站基础二
- 节奏大师乐谱破解