关于Android手机屏幕的那些事

/ 0评 / 0

前言

由于Android系统的开放性,任何用户、开发者、OEM厂商、运营商都可以对Android进行定制,所以不同的品牌手机屏幕大小不一样,屏幕分辨率也不一样,这样对于我们来说,屏幕适配就是一个很大的问题,相对于苹果,android手机的屏幕实在是太多了,这里我不介绍如何进行屏幕适配,只是介绍下关于手机屏幕的几个参数。如果想知道如何进行屏幕适配请看这里:Android屏幕适配全攻略(最权威的官方适配指导)

屏幕尺寸

屏幕尺寸是指显示器屏幕对角线的尺寸,一般用英寸来表示。屏幕对角线长度转换为英寸即可得到屏幕尺寸。1英寸=2.54厘米。

屏幕分辨率(px)

屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1960*1080。

屏幕像素密度(dpi)

屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关。

计算公式:屏幕对角线像素个数/屏幕尺寸。

例如:

HVGA屏320*480,一般是3.5寸,计算点密度为√ (320^2 + 480^2) / 3.5 = 164,约等于160,1pd=1px

WVGA屏480*800,按3.8寸屏算,点密度 √ (480^2 + 800^2) / 3.8 = 245,约等于240,1dp=1.5px。

屏幕无关像素(dp)

dip或dp (device independent pixels)屏幕无关像素, 与设备屏幕有关。

dp和px的换算:在dpi为160的手机屏幕上,1dp = 1px 。px = dpi/160 * dp

不同像素密度的屏幕种类

根据屏幕密度,一般分为这6种ldpi、mdpi、hdpi、xdpi、xxdpi,xxxhdpi,分别对应android stdio中资源文件夹下的drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xdpi、drawable-xxdpi,drawable-xxxhdpi几个文件夹。

密度 代表的分辨率(px) 系统密度(dpi) 1dp = ?px
低密度(ldpi) 240x320 120 0.75
中密度(mdpi) 240x320 160 1
高密度(hdpi) 480x800 240 1.5
超高密度(xhdpi) 720x1280 320 2
超超高密度(xxhdpi) 1080x1920 480 3
超超超高密度(xxxhdpi) 3840×2160 640 4

相应的分辨率不一定代表dpi也是对应的,比如720x1280的设备不都是320dpi的,我也遇到过160dpi的,可使用wm命令查看。

usage: wm [subcommand] [options]
       wm size [reset|WxH]
       wm density [reset|DENSITY]
       wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM]

wm size: return or override display size.

wm density: override display density.

wm overscan: set overscan area for display.

values文件夹的匹配规则

对于dimens.xml等,都是在values文件中,有时候为了适配,我们会新建其他的values文件夹,比如values-zh-rCN、values-hdpi-1920x1080、values-hdpi、values-1280x720

对于不同dpi的设备,匹配规则如下 dpi优先于尺寸

举例:有values-xhdpi-1920x1080 values-hdpi-1280x720两套布局文件

在hdpi 1920x1080的设备上,会使用 values-hdpi-1280x720

在xhdpi 1280x720的设备上,会使用values-xhdpi-1920x1080

如果是values-1920x1080 values-hdpi-1280x720这两套布局文件

在hdpi 1920x1080的设备上,会使用 values-hdpi-1280x720,因为dpi优先于尺寸。

几个常用尺寸

Launcher icon:48dp*48dp

Action bar icons:32dp*32dp

Small icons:16dp*16dp

Notification icons:24dp*24dp

工具网站

自动根据分辨率转换网站:http://pixplicity.com/dp-px-converter/

QQ截图20160719142830

不同的values文件夹

一般来说,我们的项目里面只有一个values文件夹,当我们需要适配其他不同尺寸、分辨率的设备的时候,就需要新建对应的values,比如values-1280x800文件夹就对应的分辨率为1280x800的设备,当然我们也可以适配不同dpi的设备,比如values-hdpi就对应hdpi的设备。

参考网址:红黑联盟 Android 屏幕适配

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注