工作上的分辨率:五个dimen文件:普通的/x/xx/xxx四个文件夹加上一个nx的文件夹
设计师给的如果是2.75自定义dp/sp的格式,那么里面的值对应上nx,然后除3乘2.75得到其他四个文件夹;
设计师给的图分别按以下不同分辨率尺寸进行相除,最后都能得到相同的结果。
(前面是1dp 等于多少px ,后面是屏幕密度)
- xxxhdpi:4.0 (640)
- xxhdpi:3 (480)
- nx:2.75 (440)
- xhdpi: 2.0 (320)
根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将使用专为小于当前屏幕的屏幕而设计的资源(可能图片大小不一致,则会自动进行缩放处理)
屏幕密度可以用adb shell wm density获取,也可以通过AxBpx的手机分辨率,获取到斜对角线长 A方+B方开根 除以 手机的尺寸(手机尺寸一般指的是斜对角线的长度);
dp = px / (dpi / 160) px = dp * (dpi / 160) dp = px / denisity or dp = px / (dpi / 160)
dpi: 是厂商定义的常量值 = 根据勾股定理开根除4
ldpi: dpi 120 –> 240 * 320
mdpi: dpi 160 –> 320 * 480
hdpi: dpi 240 –> 480 * 800
xhdpi: dpi 320 –> 720 * 1080 如:(720*720+1080*1080)开根号 除 4 = 320dpi(所以是2.0)
xxhdpi:dpi 380 –>1080p 1920*1080 高清
如果想在给的是以dp为单位的图,默认直接是普通的/x/xx/xxx四个文件夹中的dp数值,只要分别往四个文件中写入即可,若要写nx文件,需要dp数值/2.75*3拿到对应的数值;
传送门:https://blog.csdn.net/qq_33275597/article/details/52175890
https://blog.csdn.net/tuke_tuke/article/details/51111425
px:指像素,对应屏幕上每一个点
dp:指设备独立像素,在每英寸160点的显示屏上,1px=1dp;其他显示屏上不相同;
dp(dip): density dependent pixels(密度独立像素). 不同设备
有不同的密度,不同的显示效果,这个和设备硬件有关。和px相
比,它在不同密度的屏幕上显示的比例保持一致
密度Density:
Android中的密度就是屏幕每英寸包含的像素数目,单位是
dpi(dots per inch).比如实体手机屏幕的宽是2英寸长是3英
寸,
如果它的分辨率是320*480像素,那么每英寸包含的像素点就是
320/2=160dpi(横向),480/3=160dpi,那么这个屏幕的密度
就是160dpi,
如果它的分辨率是640*960像素,那么这个屏幕的密度就是
320dpi。
dp和px转换:
Android规定,在160dpi的屏幕上,1dp=1px,在320dpi的
屏幕上,1dp=2px
计算公式:px = dp * (dpi / 160),说明1dp代表了多少个px。
以160dpi为基准,密度是160dpi的多少倍就乘以dp就是px值
比如:在160dpi上,组件设置的width=200dp,那么它的实际
px值就是200*(160/160)=200px,在320dpi的密度上,实际
px值就是200*(320/160)=400px
原理:Android资源目录的读取顺序?
这就是一个Android应用的资源查找的顺序问题,其实简单说,在查找时会先去掉有冲突的资源目录(上图第1步),然后再按MCC、MNC、语言等指定的优先级
进行查找,直到确认一个匹配资源。根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将使用专为小于当前屏幕的屏幕而设计的资源