Android开发中dp,sp和px之间的转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发中dp,sp和px之间的转换相关的知识,希望对你有一定的参考价值。

本文转载于 http://blog.csdn.net/student9128/article/details/53932470

众所周知,在Android开发中dp和px,sp和px之间的转换时必不可少的,下面将转换的代码记录下来:

 1 public class DisplayUtils {
 2     /**
 3      * convert px to its equivalent dp
 4      * 
 5      * 将px转换为与之相等的dp
 6      */
 7     public static int px2dp(Context context, float pxValue) {
 8         final float scale =  context.getResources().getDisplayMetrics().density;
 9         return (int) (pxValue / scale + 0.5f);
10     }
11 
12 
13     /**
14      * convert dp to its equivalent px
15      * 
16      * 将dp转换为与之相等的px
17      */
18     public static int dp2px(Context context, float dipValue) {
19         final float scale = context.getResources().getDisplayMetrics().density;
20         return (int) (dipValue * scale + 0.5f);
21     }
22 
23 
24     /**
25      * convert px to its equivalent sp 
26      * 
27      * 将px转换为sp
28      */
29     public static int px2sp(Context context, float pxValue) {
30         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
31         return (int) (pxValue / fontScale + 0.5f);
32     }
33 
34 
35     /**
36      * convert sp to its equivalent px
37      * 
38      * 将sp转换为px
39      */
40     public static int sp2px(Context context, float spValue) {
41         final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
42         return (int) (spValue * fontScale + 0.5f);
43     }
44 

同时系统也提供了TypedValue类帮助我们转换

 1 /**
 2 * convert dp to its equivalent px
 3 */
 4 protected int dp2px(int dp){
 5         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp,getResources().getDisplayMetrics());
 6     }
 7 
 8 /**
 9 * convert sp to its equivalent px
10 */
11 protected int sp2px(int sp){
12         return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp,getResources().getDisplayMetrics());
13     }

 

 

 

以上是关于Android开发中dp,sp和px之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

Android中dp,px,sp概念梳理

Android dp和px之间转换 及 获取坐标

Android中dp和px之间进行转换

android px,dp,sp大小转换工具

Android中常见的单位ppi,dp,dpi,sp,px

Android单位转换 (pxdpsp之间的转换工具类)