屏幕适配: 1024*600的屏幕 宽高纬度
dpi有240 和 160两种值
对应的屏幕密度是1.5和1.0
像素密度:DPI
一个机器,屏幕4寸,分辨率480X800,
dpi计算: 用勾股定理计算出对角线上的像素数是:932.95,那么dpi就是932.59/4 = 233px/inch
dp:设备无关像素(屏幕密度)
屏幕密度:density
DPI/(160px/inch)
1dp代表的像素数。
假设dpi是240 像素/英寸 , 那么density就是1.5
那么就是 dp=1.5px
修改屏幕dpi值:在system/build.prop中添加ro.sf.lcd_density=160
获取屏幕dpi的方法:
adb shell getprop ro.sf.lcd_density
系统通过DPI的值去在Drawable下寻找资源目录
drawable-hdpi 240
drawable-ldpi 120
drawable-mdpi 160
drawable-xhdpi 320
drawable-xxhdpi >320
系统通过sw的值去在layout下寻找资源目录;
layout:
layout
layout-sw400dp 计算公式是 sw *160/DPI(sw指的是最小的屏幕宽度,在1024*600中指的是600) 最小宽度是400dp
选择一个比这个结果小,而又最接近这个值的dp。
sw是最小宽度,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
layout-sw600dp
...
所以1024*600 当DPI是160的时候,
sw*160/DPI = 600的,系统在layout-sw600dp目录下面去寻找资源值,如果没有就在layout-sw400dp下面在寻找。
values:与layout的查找时一样的。
values
values-sw400dp
values-sw600dp