一、适配可行性

早在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和屏幕尺寸...相关推荐

  1. 微信jssdk,实现多图上传的一点心得

    一.首先在common.js里封装一个函数,在需要调用jsSDK的页面引用此方法即可实现微信的信息配置function signatureJSSDK() { var url = window.loca ...

  2. android计算手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法

    手机分辨率基础知识(DPI,DIP计算) 1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托 ...

  3. 创建支持多种屏幕尺寸的Android应用

    负责人:冰凝 原文链接:http://developer.android.com/guide/practices/screens_support.html Android涉及各种各样的支持不同屏幕尺寸 ...

  4. Supporting Multiple Screens(支持Android各种屏幕尺寸)

    原文链接 本文翻译自Supporting Multiple Screens. 目前我这篇翻译应该是最全,最完整的官方文档翻译,转载我的翻译请联系本人,标明出处. Supporting Multiple ...

  5. 设计兼容不同的屏幕尺寸的Android界面

    Android的屏幕类型有几百种不同的尺寸,从小型的手机到大型的电视机.因此要使我们的应用程序兼容不同屏幕尺寸,才可以让我们的应用提供给更多的用户使用. 一.支持不同的屏幕尺寸 1.使用"w ...

  6. Android开发系列——实战篇5:自适应屏幕尺寸(超详细教程)

    在实战篇4中构建了界面之后,在模拟器中完好的布局,在实际下载到手机上的时候,却出现了布局不协调的问题. 在模拟器Nexus6上的布局界面: 在真机HUWEI P10 Plus上的布局界面: 在真机HU ...

  7. Android屏幕尺寸适配常见方案smallestWidth

    前言 介于目前的Android设备存在有不同的屏幕尺寸,屏幕分辨率,像素密度,Android应用在开发的过程必须要考虑到屏幕尺寸适配的问题,以保证在不同尺寸的Android设备上都能够正常运行. 基本 ...

  8. android自学视频!Android岗大厂面试官常问的那些问题,终局之战

    前言 说起程序员人们的第一印象就是工资高.加班凶.话少钱多头发少.再加上现在科技互联网公司太吃香,bat.华为小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人的心里. 与其它 ...

  9. android多分辨率多密度,android多分辨率多密度下界面适配方案

    前言 Android设计之初就考虑到了UI在多平台的适配,它本身提供了一套完善的适配机制,随着版本的发展适配也越来越精确,UI适配主要受平台两个因素的影响:屏幕尺寸(屏幕的像素宽度及像素高度)和屏幕密 ...

最新文章

  1. int数组,找小于右边所有数,大于左边所有数的数
  2. Angular getSimpleChangesStore的实现原理
  3. c++ 字符串中的字符无效_13python中的字符串
  4. python 网络请求类库 requests 使用
  5. 冒险岛历代版本科普(干货)-琳琳冒险岛
  6. Spring Cloud 从入门到精通
  7. 程序员进阶必备--写文档
  8. 《解构产品经理互联网产品策划入门》PDF+《互联网产品运营产品经理的10堂精英课》PDF分析...
  9. Err.number错误号和错误说明
  10. 能让HR多看两分钟的优秀简历
  11. 如何修改mtp模式在电脑上显示的存储容量大小?
  12. 华为鸿蒙系统深圳,鸿蒙操作系统面世 华为称“把不可能变为可能”
  13. 零基础学java——面向对象(三)
  14. 无域名HTTP请求攻击分析
  15. MPU6050姿态融合解算(DMP)
  16. ArrayMap和SparseArray
  17. Linux Mysql8.x安装
  18. 8月10日模拟赛题解
  19. Echarts全国地区地图json获取(包含乡镇)
  20. 学习计算机视觉之目标检测的总结

热门文章

  1. flutter页面布局HTML,Flutter开发实战初级(2)页面布局详解
  2. 无线射频专题《射频合规,2.4GHz WIFI频谱模板》
  3. 使用ALLMAPS进行辅助组装得到准染色体水平基因组
  4. 5“机”时代,如何掘金新价值和新机遇?
  5. 解决 zbrush导出的模型在blender里没有颜色的问题
  6. 百度百科里的个人介绍是怎么做上去的,人物百度百科词条创建
  7. 托福高频真词List16 // 附托福TPO阅读真题
  8. 苹果地图副总裁_看完这篇文章 或许你会再给“苹果地图”一次机会
  9. 基于面部表情的情绪识别-论文学习
  10. 商标注册查询入口官网在国家知识产权局商标局查询