屏幕适配dpi

来源:互联网 发布:专业软件测试培训学校 编辑:程序博客网 时间:2024/06/05 08:49

像素密度: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
   ...

参考link:http://www.cnblogs.com/yaozhongxiao/archive/2014/07/14/3842908.html

sp, dp ,px换算:http://www.cnblogs.com/bluestorm/p/3640786.html

0 0