安卓屏幕分辨率及UI尺寸详解

article/2025/11/9 9:08:50

1、了解几个概念

(1)分辨率。分辨率就是手机屏幕的像素点数,一般描述成屏幕的“宽×高”,安卓手机屏幕常见的分辨率有480×800、720×1280、1080×1920等。720×1280表示此屏幕在宽度方向有720个像素,在高度方向有1280个像素。

(2)屏幕大小。屏幕大小是手机对角线的物理尺寸,以英寸(inch)为单位。比如某某手机为“5寸大屏手机”,就是指对角线的尺寸,5寸×2.54厘米/寸=12.7厘米。

(3)密度(dpi,dots per inch;或PPI,pixels per inch)。从英文顾名思义,就是每英寸的像素点数,数值越高当然显示越细腻。假如我们知道一部手机的分辨率是1080×1920,屏幕大小是5英寸,你能否算出此屏幕的密度呢?哈哈,中学的勾股定理派上用场啦!通过宽1080和高1920,根据勾股定理,我们得出对角线的像素数大约是2203,那么用2203除以5就是此屏幕的密度了,计算结果是440。440dpi的屏幕已经相当细腻了。


2、实际密度与系统密度

尚未发现他处使用“实际密度”和“系统密度”这两个词汇,暂时由我如此定义吧。

“实际密度”就是我们自己算出来的密度,这个密度代表了屏幕真实的细腻程度,如上述例子中的440dpi就是实际密度,说明这块屏幕每寸有440个像素。5英寸1080×1920的屏幕密度是440,而相同分辨率的4.5英寸屏幕密度是490。如此看来,屏幕密度将会出现很多数值,呈现严重的碎片化。而密度又是安卓屏幕将界面进行缩放显示的依据,那么安卓是如何适配这么多屏幕的呢?

其实,每部安卓手机屏幕都有一个初始的固定密度,这些数值是120、160、240、320、480,我们权且称为“系统密度”。大家发现规律没有?相隔数值之间是2倍的关系。一般情况下,240×320的屏幕是低密度120dpi,即ldpi;320×480的屏幕是中密度160dpi,即mdpi;480×800的屏幕是高密度240dpi,即hdpi;720×1280的屏幕是超高密度320dpi,即xhdpi;1080×1920的屏幕是超超高密度480dpi,即xxhdpi。

安卓对界面元素进行缩放的比例依据正是系统密度,而不是实际密度。


3、一个重要的单位dp

dp也可写为dip,即density-independent pixel。你可以想象dp更类似一个物理尺寸,比如一张宽和高均为100dp的图片在320×480和480×800的手机上“看起来”一样大。而实际上,它们的像素值并不一样。dp正是这样一个尺寸,不管这个屏幕的密度是多少,屏幕上相同dp大小的元素看起来始终差不多大。

另外,文字尺寸使用sp,即scale-independentpixel的缩写,这样,当你在系统设置里调节字号大小时,应用中的文字也会随之变大变小。


4、dp与px的转换

在安卓中,系统密度为160dpi的中密度手机屏幕为基准屏幕,即320×480的手机屏幕。在这个屏幕中,1dp=1px。

100dp在320×480(mdpi,160dpi)中是100px。那么100dp在480×800(hdpi,240dpi)的手机上是多少px呢?我们知道100dp在两个手机上看起来差不多大,根据160与240的比例关系,我们可以知道,在480×800中,100dp实际覆盖了150px。因此,如果你为mdpi手机提供了一张100px的图片,这张图片在hdpi手机上就会拉伸至150px,但是他们都是100dp。

中密度和高密度的缩放比例似乎可以不通过160dpi和240dpi计算,而通过320px和480px也可以算出。但是按照宽度计算缩放比例不适用于超高密度xhdpi和超超高密度xxhdpi了。即720×1280中1dp是多少px呢?如果用720/320,你会得出1dp=2.25px,实际这样算出来是不对的。dp与px的换算要以系统密度为准,720×1280的系统密度为320,320×480的系统密度为160,320/160=2,那么在720×1280中,1dp=2px。同理,在1080×1920中,1dp=3px。

大家可以记住下面这个比例,dp与px的换算就十分easy啦!

ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12,我们发现,相隔数字之间还是2倍的关系。计算的时候,以mdpi为基准。比如在720×1280(xhdpi)中,1dp等于多少px呢?mdpi是4,xhdpi是8,2倍的关系,即1dp=2px。反着计算更重要,比如你用PhotoShop在720×1280的画布中制作了界面效果图,两个元素的间距是20px,那要标注多少dp呢?2倍的关系,那就是10dp!


当安卓系统字号设为“普通”时,sp与px的尺寸换算和dp与px是一样的。比如某个文字大小在720×1280的PS画布中是24px,那么告诉工程师,这个文字大小是12sp。

 

5、建议在xdhpi中作图

安卓手机有这么多屏幕,我到底依据哪种屏幕作图呢?没有必要为不同密度的手机都提供一套素材,大部分情况下,一套就够了。

现在手机比较高的分辨率是1080×1920,你可以选择这个尺寸作图,但是图片素材将会增大应用安装包的大小。并且尺寸越大的图片占用的内存也就越高。如果你不是设计ROM,而是做一款应用,我建议大家用PS在720×1280的画布中作图。这个尺寸兼顾了美观性、经济性和计算的简单。美观性是指,以这个尺寸做出来的应用,在720×1280中显示完美,在1080×1920中看起来也比较清晰;经济性是指,这个分辨率下导出的图片尺寸适中,内存消耗不会过高,并且图片文件大小适中,安装包也不会过大;计算的简单,就是1dp=2px啊,多好计算啊!

做出来的图片,记着让界面工程师放进drawable-xhdpi的资源文件夹中。

 

6、屏幕的宽高差异

在720×1280中作图,要考虑向下兼容不同的屏幕。通过计算我们可以知道,320×480和480×800的屏幕宽度都是320dp,而720×1280和1080×1920的屏幕宽度都是360dp。它们之间有40dp的差距,这40dp在设计中影响还是很大的。如下图蝴蝶图片距离屏幕的左右边距在320dp宽的屏幕和360dp宽的屏幕中就不一样。



不仅宽度上有差异,高度上的差异更加明显。对于天气等工具类应用,由于界面一般是独占式的,更要考虑屏幕之间的比例差异。


如果想消除这些比例差异,可以通过添加布局文件来实现。一般情况下,布局文件放在layout文件夹中,如果要单独对360dp的屏幕进行调整,你可以单做做一个布局文件放在layout-w360dp中;如果你想对某个特殊的分辨率进行调整,那么你可以将布局文件放在标有分辨率的文件夹中,如layout-854×480。

 

7、几个资源的文件夹

在720×1280中做了图片,要让开发人员放到drawable-xhdpi的资源文件夹中,这样才可以显示正确。个人认为仅提供一套素材就可以了,可以测试一下应用在低端手机上运行是否流畅,如果比较卡顿,可以根据需要提供部分mdpi的图片素材,因为xhdpi中的图片运行在mdpi的手机上会比较占内存。

以应用图标为例,xhdpi中的图标大小是96px,如果要单独给mdpi提供图标,那么这个图标大小是48px,放到drawable-mdpi的资源文件夹中。各个资源文件夹中的图片尺寸同样符合ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12的规律。


如果你把一个高2px的分割线素材做成了9.png图片,你想让细线在不同密度中都是2px,而不被安卓根据密度进行缩放,怎么办?你可以把这个分割线素材放到drawable-nodpi中,这个资源文件夹中的图片,将按照实际像素大小进行显示,而不会被安卓根据密度进行缩放。即在mdpi中细线是2px(2dp),在xhdpi中细线是2px(1dp)。

 

以上是对安卓屏幕的初步总结,不知道你看完后是豁然开朗,还是一头雾水?这篇文章主要为了实用起见,避开了过多深入的分析,如果你还有什么疑问,可以留言。

作者:renkai

本文转自 学ui网 » UI设计师不可不知的安卓屏幕知识

http://chatgpt.dhexx.cn/article/sghtxTwX.shtml

相关文章

UI app界面的尺寸规范

UI界面的尺寸规范 上周更了一篇关于Android系统界面设计的尺寸规范,有些小伙伴看了以后存在部分尺寸上的疑问,这次把这些地方简单的解释了一下,顺便把iOS系统规范也加上了,两者可以做一个对比。在这里我要强调的是这是移动端的样…

Android 界面设计尺寸规范

这里取用640*960的尺寸设计,那我们就说说在这个尺寸下这些元素的尺寸。 状态栏:就是我们经常说的信号、运营商、电量等显示手机状态的区域,其高度为:40px导航栏:显示当前界面的名称,包含相应的功能或者页面…

手机端web/app界面设计尺寸规范

手机端web/app界面设计尺寸规范 移动端高清、多屏适配方案 背景 开发移动端H5页面面对不同分辨率的手机面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿。 对于移动端开发而言,为了做到页面高清的效…

Android界面尺寸规范

这样的手机又vivo智能收款机、三星Galaxy A5、华为荣耀等手机。 这样的手机屏幕尺寸是:5寸 即屏幕对角线是5英寸。 计算方法:1280平方+720平方=2156800,结果再开平方=1468.6048,再5,…

【移动端】手机界面的设计尺寸

从设计方面来看,做手机界面设计的尺寸一般分为iPhone和Android两种设备。 Android的常用逻辑分辨率: Android的常用逻辑分辨率:参考屏幕尺寸大全 360 * 640 、 360 * 720、 360 * 740、 360 * 760、 360 * 780、 360 * 800 411 * 731 48…

移动界面尺寸!安卓720*1280界面尺寸规范参考

这样的手机又vivo智能收款机、三星Galaxy A5、华为荣耀等手机。 这样的手机屏幕尺寸是:5寸 即屏幕对角线是5英寸。 计算方法:1280平方+720平方=2156800,结果再开平方=1468.6048,再5&…

搭建nginx代理服务器

搭建nginx代理服务器 原理:1、在proxy-1的nginx.conf主配置文件后添加2、修改proxy-1的子配置文件3、修改存储服务器的一些配置4、启动服务测试: 原理: 通过代理服务器进行访问,减小web1和web2的负担 资源是不直接放在web1和web2下的&#x…

node.js搭建代理服务器实现跨域

node.js搭建代理服务器实现跨域 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境&…

apache 搭建ip代理服务器

前期准备 windows / LinuxApache 这里就不教如何安装apache了,需要的可以查询如何安装。 apache 配置 找到 httpd.conf 文件,apache的安装目录下 Apache2.4.39\conf\httpd.conf 找到下面几行配置,默认是注释了的,你需要把 # 号…

在CentOS 7上搭建代理服务器(Socks 5)

安装环境配置 1. yum install gcc 2. yum install openldap-devel 3. yum install pam-devel 4. yum install openssl-devel 安装Socks 5 wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz 解压ss5-3.8.9-8.tar.gz tar -xzvf ss5-3.8.9…

10分钟搭建linux代理服务器

介绍 关于搭建代理服务器的方法,我也是刚刚接触,从网上找了一些能够行得通的方法来给大家做个分享: 这里我用的是Tinyproxy作为代理服务软件。这个东西很小,并没有几M。 tinyproxy最大的特点就是小,功能简单&#xff…

用nodejs搭建代理服务器步骤

前端开发者在工作中常常遇到跨域的问题,一般我们遇到跨域问题主要使用以下办法来解决: 1、jsonp 2、cors 3、配置代理服务器。 jsonp不是很灵活,只能发送get请求,不能发送psot请求,而cors虽然可以支持多种请求格式,…

关于腾讯云搭建代理服务器的详细过程

腾讯云的规定是一个账号一个地区只能有20个公网IP: 1)点击实例名 2)添加辅助网卡 3)绑定弹性公网ip 4)为辅助网卡绑定安全组 5)修改网卡配置文件 ### 复制eth0的网卡文件 ### [root@VM_1_62_centos ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth{0,1} ### 修改eth1文…

使用腾讯云Ubuntu20.04搭建代理服务器

文章目录 安装配置文件位置云服务器开放端口 添加规则运行停止状态重启连接测试参考 安装 sudo apt-get install tinyproxy配置文件位置 /etc/tinyproxy.conf 或者 /etc/tinyproxy/tinyproxy.conf # 预设是8888 Port, 可以更改 Port 8888 # 将127.0.0.1改成你自己的IP All…

xray搭建代理服务器

xray 代理服务器配置 1.下载xray 2.执行 xattr -c /Users/mac/Downloads/Xray-macos-64.zip 3.配置 log:LogObject  waring 改成debug 2.InboundObject :  protocol:HTTP  settings 设置为如下,address和…

linux搭建代理服务器

最近在做某个项目时,由于机房环境是内网环境,但是有些服务(短信发送、email发送)需要访问外网交互,所以需要搭建代理服务器。 该服务器可以访问外网,所有的内网服务通过该代理服务器访问外网。简易示意图如…

Ubuntu 搭建代理服务器squid

目录 前言 工具准备 安装squid 修改配置文件 重新加载配置文件 查看squid的端口状态 为浏览器配置代理 前言 本来这次的测试是想在校园网环境下 实现无认证通过某个已认证的主机代理上网的! 可后来通过测试我发现只有主机通过校园网认证后才能访问校园网内(局域网)的主机…

mysql的字符集修改_修改MySQL字符集

1.关于MySQL字符集 MySQL的字符集支持(CharacterSet Support)有两个方面: 字符集(Characterset)和排序方式(Collation)。 MySQL对于字符集的支持细化到四个层次:服务器(server),数据库(database),数据表(table)和连接(connection)。 2.查看MySQL字符集 2.1.查看字符集的设置…

mysql 字符集设置

一、 MySQL字符集设置 (1) 系统变量: – character_set_server:默认的内部操作字符集 – character_set_client:客户端来源数据使用的字符集 – character_set_connection:连接层字符集 – characte…

mysql 所有字符集_mysql字符集

mysql字符集 字符集基础 字符集:数据库中的字符集包含两层含义 各种文字和符号的集合,包括各国家文字,标点符号,图形符号,数字等。 字符的编码方式,即二进制数据与字符的映射规则; 字符集分类: ASCII:美国信息互换标准编码;英语和其他西欧语言;单字节编码,7位(bits…