弄懂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
- 弄懂Android手机、pad适配的dp与px
- Android 常见手机dp与px之间的转换
- Android手机适配问题,【.9制作】【获取手机屏幕的宽高】【px,dp转换】
- 手机适配,density,dp和px的转换
- android手机dp与px转换工具类
- Android手机适配,手机尺寸、px、dpi、dp、sp详解
- Android手机适配,手机尺寸、px、dpi、dp、sp详解
- android dp与px的换算
- android dp 与 px 的换算
- android px与dp(dip)的转换
- Android中dp 与 px 的转换
- android中dp与px的转换
- Android开发dp与px的转化
- android中dp与px的关系
- android dp与px之间的转换
- 浅谈android如何同时适配pad和手机
- android 的屏幕适配问题,dp与px的换算
- Android屏幕适配 px,dp,dpi及density的关系与深入理解
- Java学习之Iterator(迭代器)的一般用法 (转)
- 用多线程并发的方式来计算两个矩阵的乘法
- LeetCode 之 Count and Say
- Andorid获取状态栏高度的三种方法
- RS485基本概念及可靠性设计
- 弄懂Android手机、pad适配的dp与px
- 玩转云端(云服务器使用详解)
- javascript模板引擎——artTemplate
- FLEX 网格布局及响应式处理
- jquery.validate ie8 验证提交问题
- 表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
- Android Studio 设置内存大小及原理
- 485总线死锁与复位
- erlang源码分析