两种方式:
1. 通过工具类实现
这个工具类可保存在android项目中,在绘图的时候作为工具类使用,转换dp、sp、px
import android.content.Context;
/**
* dp、sp转换为px的工具类
*/
public class DisplayUtil {
/**
* 将px值转换为dip或dp值,保证尺寸大小不变
*
* @param context
* @param pxValue
* DisplayMetrics类中属性density
* @return
*/
public static int px2dip(Context context,float pxValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(pxValue/scale +0.5f);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变
* @param context
* @param dipValue
* DisplayMetrics类中属性density
* @return
*/
public static int dip2px(Context context,float dipValue){
final float scale = context.getResources().getDisplayMetrics().density;
return (int)(dipValue * scale +0.5f);
}
/**
* 将px值转换为sp值,保证文字大小不变
* @param context
* @param pxValue
* DisplayMetrics类中属性scaledDensity
* @return
*/
public static int px2sp(Context context,float pxValue){
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int)(pxValue / fontScale +0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
* @param context
* @param spValue
* DisplayMetrics类中属性scaledDensity
* @return
*/
public static int sp2px(Context context,float spValue){
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int)(spValue * fontScale +0.5f);
}
}
2. 通过系统提供的TypedValue类实现
在Activity中实现下列方法,再进行调用,可实现转化
/**
*dp2px
*/
protected int dp2px(int dp){
//系统提供的TypedValue类
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,dp,getResources().getDisplayMetrics());
}
/**
* sp2px
*/
protected int sp2px(int sp){
//系统提供的TypedValue类
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,sp,getResources().getDisplayMetrics());
}
网友评论