美文网首页
Android中一些像素单位的转换(学习笔记)

Android中一些像素单位的转换(学习笔记)

作者: NicholasHwang | 来源:发表于2016-05-21 21:29 被阅读0次

今天看了鸿洋老师在慕课网上面制作的一个视频,里面有一段关于dp转换为px的代码,以前采用的方法都是:
<pre class=“brush: java; gutter: true;”>
//转换dp为px
public static int convertDpToPx(Context context, int dp) {
float scale = context.getResources().getDisplayMetrics().density;
return (int)(dp*scale + 0.5f);
}
//转换px为dp
public static int convertPxToDp(Context context, int px) {
float scale = context.getResources().getDisplayMetrics().density;
return (int)(px/scale + 0.5f);
}
</pre>

而视频中出现的是
<pre class=“brush: java;gutter:true;”>
private int dp2px(int dpVal){
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dpVal,getResources.getDisplayMetrics());
}
</pre>
<pre class=“brush: java;gutter:true;”>
private int sp2px(int spVal){
return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,spVal,getResources.getDisplayMetrics());
}
</pre>
<code>applyDimension(int unit, float value,DisplayMetrics metrics)</code>中,第一个参数是像素单位,第二个参数是对应值,第三个参数封装了显示区域的各种属性值。
下面我们看一下<code>applyDimension(int unit, float value,DisplayMetrics metrics)</code>中的代码:
<pre class=“brush:java,gutter:true”>
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;
}
</pre>
(内容中如有错误,欢迎指出)

相关文章

  • Android中一些像素单位的转换(学习笔记)

    今天看了鸿洋老师在慕课网上面制作的一个视频,里面有一段关于dp转换为px的代码,以前采用的方法都是: //转换dp...

  • android中的单位

    android 中的单位 android中的单位主要有一下几种:一》 px:像素 dip(dp):android的...

  • Android中px, dp, sp单位转换

    开发中经常会遇到尺寸之间的转换,比如设计图中尺寸单位基本都是像素(px),但是对于Android设备来说直接使用像...

  • [Android] Android开发中dip,dpi,dens

    Android开发中的各种单位的解释 Px (Pixel像素)也称为图像元素,是作为图像构成的基本单元,单个像素的...

  • iOS 像素 与字号的转换

    用PS设计的iOS效果图中,字体是以像素(px)为单位的,iOS App开发中字体以磅(pt)为单位,它们的转换关...

  • 【Android】dp 转 px

    TypedValue.applyDimension() 可将各种单位尺寸值转换为实际设备上对应的像素值,支持的单位...

  • 面试题及答案

    1、文字超出显示为省略号 2.div垂直居中 rem 单位如何转换为像素值 当使用 rem 单位,他们转化为像素大...

  • 2019-03-22第四天

    今天学习了: 1:长度单位 像素px - 像素是我们在网页中使用得最多的一个单位 一个像素就相当于屏幕中的一个小点...

  • 2019-05-28第三天

    今天学习了: 1:长度单位 像素px - 像素是我们在网页中使用得最多的一个单位 一个像素就相当于屏幕中的一个小点...

  • iOS字体(UIFont)与px设计字体换算

    ps和pt转换 px:相对长度单位。像素(Pixel)。(PS字体) pt:绝对长度单位。点(Point)。(iO...

网友评论

      本文标题:Android中一些像素单位的转换(学习笔记)

      本文链接:https://www.haomeiwen.com/subject/hrlorttx.html