安卓设备屏幕分辨率适配

需求

适配1.83寸的手表屏幕

屏幕分辨率为240px*284px

dpi=203.18

计量单位

xml 复制代码
px (Pixels): 其实就是像素单位,是屏幕上最小可见的单元,比如我们通常说的手机分辨列表800*400都是px的单位(px 的单位是 像素,dpi 的单位是 像素/英寸)
sp : 同dp相似,还会根据用户的字体大小偏好来缩放
dp (Device Independent Pixels(设备独立像素)): 虚拟像素,屏幕无关的像素单位,在不同的像素密度的设备上会自动适配,以确保在不同屏幕上显示的大小相对一致。
dip: 同dp
dpi(Dots Per Inch):是指每英寸的像素点数,DPI值越高,图像越清晰,像素密度越大。
mm(Millimeters):毫米是一种度量长度的单位,它代表屏幕上的实际物理长度。
pt(Points):点是一种用于印刷和排版的单位,通常用于描述字体的大小。

计算公式

px和dp:

px = dp * (dpi / 160)

在安卓开发中,dp(Density Independent Pixels)和px(Pixels)是用来表示长度或距离的单位。下面是dp和px之间的转换关系:

dp转px: px = dp * (dpi / 160) 其中dpi是屏幕的像素密度,通常可以通过获取屏幕密度DPI的方式获得。

px转dp: dp = px / (dpi / 160)

在实际开发中,推荐使用dp作为单位来定义布局和尺寸,因为dp是与屏幕密度无关的单位,可以在不同密度的屏幕上呈现一致的大小和比例。而px则是实际的像素值,会随着屏幕密度的不同而有所变化。

dpi计算:

DPI的计算公式如下: DPI = √(分辨率宽度^2 + 分辨率高度^2) / 屏幕尺寸

上面的dpi=203

将提供的数值代入公式进行计算: DPI = √(240^2 + 284^2) / 1.83 ≈ 203

其实就是勾股定理:求对角的长度除以屏幕尺寸(也是对角线长度)

  • dp转换成px:px = dp * (屏幕的像素密度 / 160)
  • px转换成dp:dp = px / (屏幕的像素密度 / 160)
  • mm转换成px:px = mm * (屏幕的像素密度 / 25.4)
  • px转换成mm:mm = px / (屏幕的像素密度 / 25.4)
  • pt转换成px:px = pt * (屏幕的像素密度 / 72)
  • px转换成pt:pt = px / (屏幕的像素密度 / 72)

Android 屏幕适配之框架(AndroidAutoSize)(今日头条)适配

github地址

AndroidAutoSize的使用

  • .添加Gradle配置

implementation 'me.jessyan:autosize:1.2.1'

添加AndroidManifest配置

xml 复制代码
<application
	<meta-data
	     android:name="design_width_in_dp"
	     android:value="240"/>
	 <meta-data
	     android:name="design_height_in_dp"
	     android:value="284"/>
</application>

现在就可以在布局文件中直接使用dp了,会自动适配屏幕分辨率

相关推荐
ByNotD0g2 分钟前
Doris 学习笔记
android·笔记·学习
修炼者7 分钟前
【Android进阶】 RenderEffect的底层实现
android
bropro43 分钟前
MySQL不使用子查询的原因
android·数据库·mysql
执笔论英雄1 小时前
【cuda】 pinpaged
android·java·数据库
新青年.2 小时前
Android(Compose)使用 LibVLC 播放 RTSP 视频流
android
一见2 小时前
WorkBuddy安装Skill的方法
android·java·javascript
毛骗导演3 小时前
万字解析 OpenClaw 源码架构-跨平台应用之Android 应用
android·前端·架构
happymaker06263 小时前
JDBC(MySQL)——DAY02
android·数据库·mysql
PenguinLetsGo3 小时前
代码段的消失:页表异常清零引发的 ILL_ILLOPC 溯源
android·linux