弄懂Android手机、pad适配的dp与px

来源:互联网 发布:网络零售商有哪些 编辑:程序博客网 时间:2024/03/28 22:18

背景:设计工程师设计图稿都是以原屏幕分辨率设计,单位也是px。

获取手机屏幕的信息:

DisplayMetrics dm = new DisplayMetrics();  getWindowManager().getDefaultDisplay().getMetrics(dm);  int width = dm.widthPixels; // 宽  int height = dm.heightPixels; // 高  float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5)  int densityDpi = dm.densityDpi; // 屏幕密度DPI(120 / 160 / 240)

打印以上信息:

例子:

小米pad:屏幕密度:320dp  —— > 1dp=2px,屏幕分辨率:1536*2048 —— >  768dp*1024dp

华为p8:  屏幕密度:480dp  —— > 1dp=3px,屏幕分辨率:1080*1794 —— >  360dp*598dp

三星p600:屏幕密度:320dp  —— > 1dp=2px,屏幕分辨率:1600*2560 —— >  800dp*1280dp

...

最后面的dp*dp就是宽*高的dp值,也就是说,整个屏幕的宽高就是那个dp值。


屏幕适配方式一、

多个dimens文件适配:把不同的dimens文件放进不同的文件夹下,能够保证不同手机,显示的控件是等比的

如果一个控件长60px那么在对应文件夹下得dimens下定义一个dimen值:

values-ldpi 对应120dp屏幕密度的手机 <span style="white-space:pre"></span>0.75dp<span style="white-space:pre"></span>80dpvalues-mdpi 对应160dp屏幕密度的手机<span style="white-space:pre"></span>1dp <span style="white-space:pre"></span>60dpvalues-hdpi 对应240dp屏幕密度的手机<span style="white-space:pre"></span>1.5dp <span style="white-space:pre"></span>40dpvalues-xhdpi 对应320dp屏幕密度的手机<span style="white-space:pre"></span>2dp <span style="white-space:pre"></span>30dpvalues-xxhdpi 对应480dp屏幕密度的手机<span style="white-space:pre"></span>3dp <span style="white-space:pre"></span>20dp


屏幕适配方式二、

代码适配:程序启动后获取屏幕的densityDpi值,对于特殊的控件需要动态设置大小的时候,就可以使用代码适配的方式进行。


public static int px2dip(Context context, float pxValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (pxValue / scale + 0.5f);}



个人博客版权所有,转载请注明出处。转载自:csdn oLimxing


0 0
原创粉丝点击