res中values-swXXXdp,px,dp,dpi适配值的计算

在系统开发过程中,总是会碰到测试提关于显示大小的bug。如设置显示大小为最大或最小,在某些软件layout上适配没有做好的话,就会出现显示异常,又要去进行相关适配。所以就有了类似value-sw320dp、sw400dp这样的文件,专门进行对dimens的定制。

1.values-swxxdp用来做适配的文件夹,一般是定义dimens,或者layout。 swXXdp表示最小宽度,所以需要先计算出手机的最小宽度值。
最小宽度计算方法:sw=160*手机宽度像素/dpi

dpi的获取方式:

getApplicationContext().getResources().getDisplayMetrics().densityDpi;

更改显示大小后,这个dpi也会改变,所以要针对计算。比如手机的分辨率为1920x1080,那么根据公式计算出的dpi为480,再去计算最小宽度:sw=160*1080/480=360dp。所以对应的文件类型是values-sw360dp。

2.px和dp之间的换算

px指屏幕像素计算方式:

px = 1dp * density(由DPI决定)

density计算方式:

density = dpi / 160 

如手机的分辨率为1920x1080,dpi为480,density 为3,所以px:dp = 3 : 1。

你可能感兴趣的:(Android手机系统开发)