您的位置:首页 > 移动开发 > Android开发

Android之dip与px互转

2016-06-02 10:37 405 查看
直接上码,只为记录:

/**
*
* @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用来减少误差。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: