直接上碼,隻為記錄:
/**
*
* @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用來減少誤差。