直接上码,只为记录:
/**
*
* @author Jenly
*
*/
public class DisplayUtils {
/**
* dip转px
* @param context
* @param dipValue
* @return
*/
public static int dip2px(Context context, float dipValue){
final float scale = getDisplayMetrics(context).density;
return (int)(dipValue * scale + 0.5f);
}
/**
* px转dip
* @param context
* @param pxValue
* @return
*/
public static int px2dip(Context context, float pxValue){
final float scale = getDisplayMetrics(context).density;
return (int)(pxValue / scale + 0.5f);
}
/**
* getDisplayMetrics
* @param context
* @return
*/
public static DisplayMetrics getDisplayMetrics(Context context){
return context.getResources().getDisplayMetrics();
}
/**
* 获取屏幕宽度和高度,单位为px
* @param context
* @return
*/
public static Point getScreenMetrics(Context context){
DisplayMetrics dm = getDisplayMetrics(context);
int width = dm.widthPixels;
int height = dm.heightPixels;
return new Point(width, height);
}
/**
* 获取屏幕长宽比
* @param context
* @return
*/
public static float getScreenRate(Context context){
Point p = getScreenMetrics(context);
float h = p.y;
float w = p.x;
return (h/w);
}
}
PS: 在dip与px互转时,因为最后转int会丢失精度,所以+0.5f用来减少误差。
本文提供了一种在Android开发中实现DIP与PX单位互相转换的方法,通过使用DisplayUtils类,开发者可以轻松地根据设备的显示密度进行单位换算,以确保应用界面在不同设备上的适配性和一致性。
1009

被折叠的 条评论
为什么被折叠?



