android 平板的 dpi,Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸...
一、适配可行性
早在Android设计之初就考虑到了这一点,为了让app适应标准or山寨屏幕,google已经有一套成熟的解决方案。其中,有这么几个指标需要注意:
(1)屏幕尺寸:单位inch,指的是屏幕对角线长度。
(2)屏幕密度:单位dpi,指的是每inch上可以显示多少像素点即px。
(3)屏幕分辨率:单位px * px,指的是一屏显示多少像素点。
(4)屏幕无关像素:单位dp/dip,指的是自适应屏幕密度的像素,用于指定控件宽高。
(5)刻度无关像素:单位sp,指的是自适应字体的像素,用于指定文字大小。
以我自己的Haier W910超级战舰(宽高比16:9)为例,上述单位的换算如下:
已知数据:屏幕尺寸4.5, 分辨率1280 * 720, 屏幕密度320
(1)16:9的4.5寸屏幕由勾股定理计算其高约为3.9寸,宽约为2.2寸
(2)则竖向dpi为1280 / 3.9 ≈ 328, 横向dpi为720 / 2.2 ≈ 327
(3)工业上切割液晶板时取整为320
那么既然dpi是自适应屏幕密度的,与px之间又是如何换算呢:
120dpi(ldpi低密度屏) 1dp = 0.75px (由于像素点是物理点,所以用2个像素点来显示3个dp的内容)
160dpi(mdpi中密度屏) 1dp = 1px
213dpi(tvdpi电视密度屏) 1dp = 1.33px
240dpi(hdpi高密度屏) 1dp = 1.5px
320dpi(xhdpi极高密度屏) 1dp = 2px
由上述分析结果可知,控件使用dp,文字使用sp即可满足自适应的需求。
二、适配方案
根据目前的调查,在市面上的平板,基本上属于mdpi和hdpi的,少数属于tvdpi(如google出的nexus7),所以我们选择这三种密度考虑适配;此外手机应用大多数都是竖屏使用,但平板作为娱乐性的一款产品,横竖屏均有使用的时候,所以我们还需要考虑到屏幕状态进行适配;最后考虑到有的rom会将虚拟键计算到屏幕尺寸里,还要考虑到虚拟键所占用的长宽。
那么如何根据这三个属性来进行适配呢?Android在资源文件values用文件名的方式提供了限定符可以帮助我们判断上述情况,限定符(mdpi,tvdpi,hdpi)可以帮助我们判断屏幕密度,限定符(land,port)可以帮助我们区分屏幕横竖屏状态,而限定符(1024x600...)可以适配计算虚拟键或者不计算虚拟键的屏幕,限定符的详细说明请参见Android SDK文档中开发者指南的Supporting Multiple Screens话题。
最终适配文件夹如下图所示:
注1:分辨率限定符的匹配是向下匹配,如果没有values-land-mdpi-1024x552,比如,分辨率values-land-mdpi-1024x600的屏幕,当rom不把虚拟键计算到屏幕尺寸时,实际显示的屏幕应该是values-land-mdpi-1024x552,无法适配到values-land-mdpi-1024x600,那这样就可能适配到下一级,比如values-land-mdpi-800x480,但是现在的平板已经没有这么低的分辨率了,所以是配到无限定符的values-mdpi里,造成界面显示上的瑕疵。
注2:由于分辨率限定符的匹配是向下匹配,所以如果有非主流mdpi屏幕不能精确适配到上述指定值时,values-mdpi至少可以保证app运行时不至于崩溃,同理values可以保证ldpi屏幕的平板不会因生成view而又取不到相应值而崩溃。
android 平板的 dpi,Android平板上开发应用的一点心得——精确适配不同的dpi和屏幕尺寸...相关推荐
- 微信jssdk,实现多图上传的一点心得
一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置function signatureJSSDK() { var url = window.loca ...
- android计算手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法
手机分辨率基础知识(DPI,DIP计算) 1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托 ...
- 创建支持多种屏幕尺寸的Android应用
负责人:冰凝 原文链接:http://developer.android.com/guide/practices/screens_support.html Android涉及各种各样的支持不同屏幕尺寸 ...
- Supporting Multiple Screens(支持Android各种屏幕尺寸)
原文链接 本文翻译自Supporting Multiple Screens. 目前我这篇翻译应该是最全,最完整的官方文档翻译,转载我的翻译请联系本人,标明出处. Supporting Multiple ...
- 设计兼容不同的屏幕尺寸的Android界面
Android的屏幕类型有几百种不同的尺寸,从小型的手机到大型的电视机.因此要使我们的应用程序兼容不同屏幕尺寸,才可以让我们的应用提供给更多的用户使用. 一.支持不同的屏幕尺寸 1.使用"w ...
- Android开发系列——实战篇5:自适应屏幕尺寸(超详细教程)
在实战篇4中构建了界面之后,在模拟器中完好的布局,在实际下载到手机上的时候,却出现了布局不协调的问题. 在模拟器Nexus6上的布局界面: 在真机HUWEI P10 Plus上的布局界面: 在真机HU ...
- Android屏幕尺寸适配常见方案smallestWidth
前言 介于目前的Android设备存在有不同的屏幕尺寸,屏幕分辨率,像素密度,Android应用在开发的过程必须要考虑到屏幕尺寸适配的问题,以保证在不同尺寸的Android设备上都能够正常运行. 基本 ...
- android自学视频!Android岗大厂面试官常问的那些问题,终局之战
前言 说起程序员人们的第一印象就是工资高.加班凶.话少钱多头发少.再加上现在科技互联网公司太吃香,bat.华为小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人的心里. 与其它 ...
- android多分辨率多密度,android多分辨率多密度下界面适配方案
前言 Android设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸(屏幕的像素宽度及像素高度)和屏幕密 ...
最新文章
- int数组,找小于右边所有数,大于左边所有数的数
- Angular getSimpleChangesStore的实现原理
- c++ 字符串中的字符无效_13python中的字符串
- python 网络请求类库 requests 使用
- 冒险岛历代版本科普(干货)-琳琳冒险岛
- Spring Cloud 从入门到精通
- 程序员进阶必备--写文档
- 《解构产品经理互联网产品策划入门》PDF+《互联网产品运营产品经理的10堂精英课》PDF分析...
- Err.number错误号和错误说明
- 能让HR多看两分钟的优秀简历
- 如何修改mtp模式在电脑上显示的存储容量大小?
- 华为鸿蒙系统深圳,鸿蒙操作系统面世 华为称“把不可能变为可能”
- 零基础学java——面向对象(三)
- 无域名HTTP请求攻击分析
- MPU6050姿态融合解算(DMP)
- ArrayMap和SparseArray
- Linux Mysql8.x安装
- 8月10日模拟赛题解
- Echarts全国地区地图json获取(包含乡镇)
- 学习计算机视觉之目标检测的总结
热门文章
- flutter页面布局HTML,Flutter开发实战初级(2)页面布局详解
- 无线射频专题《射频合规,2.4GHz WIFI频谱模板》
- 使用ALLMAPS进行辅助组装得到准染色体水平基因组
- 5“机”时代,如何掘金新价值和新机遇?
- 解决 zbrush导出的模型在blender里没有颜色的问题
- 百度百科里的个人介绍是怎么做上去的,人物百度百科词条创建
- 托福高频真词List16 // 附托福TPO阅读真题
- 苹果地图副总裁_看完这篇文章 或许你会再给“苹果地图”一次机会
- 基于面部表情的情绪识别-论文学习
- 商标注册查询入口官网在国家知识产权局商标局查询