主页(http://www.175shouji.com):Android应用如何支持屏幕多尺寸多分辨率问题
作为Android应用程序开发者都知道android是一个“碎片化”的世界。多种系统版本、多种尺寸、多种分辨率、多种机型,还有不同的厂商定制的不同ROM,你开发的应用会在不可预期的手机上报错。这给开发适配带来不小的难度。这篇文章会告诉我们怎么解决这个问题。
1、Android碎片化
1.1、android系统版本
Android更新较大的版本如下:
上面只有当前可用版本,Android L作为开发者版本没有出现其中,未来会有更多的版本。下图给出Android各个版本的占有率,这个是googleplay统计的近期数据。googleplay只支持2.2以上的手机,所以统计中缺少2.2以下版本。
1.2、Android中不同尺寸、不同分辨率市场占有情况
3、Android不同机型
这是OpenSignal在2013年的调查调查结果,Android系统设备覆盖了11,868不同机型,现在肯定会更多。
2、基本概念
Android“碎片化”如此严重,那么我们怎么解决Android应用适配问题呢。Android官方文档给出了解决方案,这篇文章也是参考总结的官方文档。
解决Android“碎片化”化问题,我们需要了解一些基础概念。
屏幕大小
根据屏幕对角线实际测量的物理大小(android已经根据屏幕大小分为四类small, normal, large, extra large),具体怎么划分的下面会提到。
屏幕密度
屏幕物理区域一个单位(一般用英寸)的像素数量,一般简称dpi(dots per inch,每英寸上的点数,记住DPI这个概念很重要)屏幕密度也分为四类 low, medium, high, extra high,他们的比例关系是 0.75:1:1.5:2,具体的值为120:160:240:320。
屏幕方向
屏幕方向分为横屏和竖屏。
分辨率
一个物理屏幕上像素点的总数。一般我们的App不会直接使用分辨率,而是使用密度和屏幕大小。
独立像素单位(Density-independent pixel (dp))
一个虚拟的单位,用来决定UI布局的。用来表述布局的尺寸或者位置。
dp是一个与屏幕密度有关系的单位,dp与像素的换算关系为 px = dp * (dpi / 160)。例如在240密度(dpi)的屏幕上一个dp等于1.5个像素。以后我们应该尽量使用dp单位布局,不要使用像素单位。这样会使你的app屏幕兼容性更好
Android1.6开始就支持多屏幕和密度了,这都是为了更好的用户体验,为了简化我们多屏幕的开发,当然这要声明或者大于4。android提供了一组范围让我们使用,见下图:
3、Android中资源配置
Android工程中经常看到下图的资源文件配置,一般会包含animator、anim、color、drawable、layout、menu、raw、value、xml等。
命名规则是-。
:资源文件名
:特定条件下可以使用这种资源
config_qualifier可以使用多种:
MCC and MNC
Language and region
Layout Direction
ldrtlldltr
Added in API level 17.
smallestWidth
Available width
Available height
Screen size
smallnormallargexlarge
Screen aspect
longnotlong
Screen orientation
portland
UI mode
cardesktelevisionappliancewatch
Night mode
nightnotnight
Screen pixel density (dpi)
ldpimdpihdpixhdpinodpitvdpi
Touchscreen type
notouchfinger
Keyboard availability
keysexposedkeyshiddenkeyssoft
Primary text input method
nokeysqwerty12key
Navigation key availability
navexposednavhidden
Primary non-touch navigation method
nonavdpadtrackballwheel
Platform Version (API level)
更多详情见请继续阅读下一页的精彩内容: