Android多分辨率适配目录

多分辨率适配目录

1
2
3
4
5
layout-large-mdpi (1024x600)
layout-large-tvdpi (800x1280)
layout-large-xhdpi (1200x1920)
layout-xlarge-mdpi (1280x800)
layout-xlarge-xhdpi (2560x1600)

或者直接使用下面这样:

1
2
layout-640x360
layout-800x480

与 layout 对应的,有不同的 drawable:

1
2
3
4
5
6
res/drawable (default)
res/drawable-ldpi/ (240x320 and nearer resolution)
res/drawable-mdpi/ (320x480 and nearer resolution)
res/drawable-hdpi/ (480x800, 540x960 and nearer resolution)
res/drawable-xhdpi/ (720x1280 - Samsung S3, Micromax Canvas HD etc)
res/drawable-xxhdpi/ (1080x1920 - Samsung S4, HTC one, Nexus 5, etc)

用不同的 layout 毕竟工作量巨大,我们的实践是用不同的 values 来对应同 layout 中的值,目录如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
res/values/dimens.xml(default)
res/values-ldpi/dimens.xml (240x320 and nearer resolution)
res/values-mdpi/dimens.xml (320x480 and nearer resolution)
res/values-hdpi/dimens.xml (480x800, 540x960 and nearer resolution)
res/values-xhdpi/dimens.xml (720x1280 - Samsung S3, Micromax Canvas HD, etc)
res/values-xxhdpi/dimens.xml (1080x1920 - Samsung S4, HTC one, etc)
res/values-large/dimens.xml (480x800)
res/values-large-mdpi/dimens.xml (600x1024)
res/values-sw600dp/dimens.xml (600x1024)
res/values-sw720dp/dimens.xml (800x1280)
res/values-xlarge-xhdpi/dimens.xml (2560x1600 - Nexus 10")
res/values-large-xhdpi/dimens.xml (1200x1920 - Nexus 7"(latest))

有时必须要考虑到密度,如下:

1
2
3
4
ldpi 120 dpi 0.75
mdpi 160 dpi 1
hdpi 240 dpi 1.5
xhdpi 320 dpi 2

获取设备屏幕信息


扫描二维码进行下载或者点击下载

通过运行DisplayInfo获取当前设备屏幕的尺寸信息,运行效果如图(Honor 7):
dispalyinfo在Honor 7上的运行效果
通过运行结果可以看出,华为Honor 7的屏幕尺寸(4.94约为5.0),分辨率(Resolution)为1080 * 1920(缺少的为下面的按键),DPI为480dpi等信息。另外还有一些
Android适配时需要了解的尺寸限定符,详细讲解见官方文档对尺寸限定符的解释
截屏,看图片分辨率,得知当前设备分辨率

市场主流分辨率

现在市场主流的两种分辨率类型(分别是1080 1920与720 1280),具体的分布情况在下图中展示。 如图展示的为16年07月份分辨率市场分布情况: 查看更详细信息[个推提供]

基本概念

https://developer.android.com/reference/android/util/DisplayMetrics.html
屏幕尺寸
手机实际物理尺寸,一般用英寸来表示(1 英寸 = 2.54 厘米)。 手机尺寸计算方式=对角线尺寸/2.54

分辨率
屏幕上显示的像素个数,单位尺寸内像素点越多,显示的图像就越清楚。 分辨率720*1280表示手机水平方向的像素为720,垂直方向为1280.

屏幕密度
表示屏幕每英寸有多少个像素。 240dpi(480800) 、320dpi(7201280)、480dpi(1080*1920)

单位

dip
dot per inch,就是每英寸的像素数,也叫做屏幕密度。这个值越大,屏幕就越清晰。

ppi
对Android而言,DPI等价于PPI(Pixels-Per-Inch)

px
pixels(像素),屏幕上的点,不同设备不同的显示屏显示效果相同,这是绝对像素,是多少就永远是多少不会改变。

dp
(andriod开发中用于描述尺寸和间距)与密度无关的像素。

sp
scaled pixels — best for text size (放大像素)(与刻度无关的像素)和dp一样,只是用于描述字号和行距。

Fork me on GitHub