Android中dp和px的转化问题,以及如何获得手机分辨率和像素密度
2017-08-29 10:53
633 查看
网上关于这类的资料很多,本人把常用的一些方法整理出来,方便大家一起使用
关于获得手机分辨率和像素密度
方法1.
方法2.
dp转化成px
方法1.
方法2.
px转化成dp
参考资料http://www.cnblogs.com/jiadongfeng/p/4789892.html
关于获得手机分辨率和像素密度
方法1.
int dp = Resources.getSystem().getDisplayMetrics().densityDpi;//像素密度 int widthPixels = Resources.getSystem().getDisplayMetrics().widthPixels;//屏幕宽度 int heightPixels = Resources.getSystem().getDisplayMetrics().heightPixels;//屏幕高度
方法2.
WindowManager manager = this.getWindowManager(); DisplayMetrics outMetrics = new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(outMetrics); int windowsDp = outMetrics.densityDpi;//像素密度 int windowsWidth = outMetrics.widthPixels;//屏幕宽度 int windowsHeight = outMetrics.heightPixels;//屏幕高度
dp转化成px
方法1.
/**这个是android本身自带的方法,TypedValue.applyDimension()方法第一个参数可以设置dp、sp等其他转化单位*/ public static int dpToPx(Context context,int dp) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); }
/**查看源码可以看到,里面有很多的单位的选择*/ public static float applyDimension(int unit, float value, DisplayMetrics metrics) { switch (unit) { case COMPLEX_UNIT_PX: return value; case COMPLEX_UNIT_DIP: return value * metrics.density; case COMPLEX_UNIT_SP: return value * metrics.scaledDensity; case COMPLEX_UNIT_PT: return value * metrics.xdpi * (1.0f/72); case COMPLEX_UNIT_IN: return value * metrics.xdpi; case COMPLEX_UNIT_MM: return value * metrics.xdpi * (1.0f/25.4f); } return 0; }
方法2.
/** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dip) { float density = context.getResources().getDisplayMetrics().density; return (int) (dip * density + 0.5f); }
px转化成dp
/** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); }
参考资料http://www.cnblogs.com/jiadongfeng/p/4789892.html
相关文章推荐
- 分辨率像素android手机屏幕分辨率 及 sp dip(dp) px 区别 及高中低分辨率时处理
- drawable包对应手机分辨率,像素密度,dp,dip,sp,px,pt简单分析
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- [Android问答] 如何获得手机屏幕分辨率?
- Android中如何将dp,dip,sp与px相互转化
- Android设备分辨率,密度以及dp
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- 分享:Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法
- android手机屏幕分辨率 及 sp dip(dp) px 区别 及高中低分辨率时处理
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- Android-分辨率以及dip(dp)、dpi、ppi、px、sp、pt说明
- 实战开发问题总结(界面设计)----android应用如何适配于多个分辨率的手机
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- android计算pad或手机的分辨率/像素/密度/屏幕尺寸/DPI值的方法
- Android屏幕大小和密度对照表,以及px、dip、sp等像素单位的解释
- Android之根据手机屏幕分辨率(px与dp互换)