/**
* 屏幕显示相关工具类
* (px ,sp, dp 等转换)
*/
public class DisplayUtil {
private static Map<ScreenEnum,Integer> screenMap = new HashMap<>();
/**
* 将px值转换为dip或dp值,保证尺寸大小不变
*
* @param pxValue
* @return
*/
public static int px2dip(float pxValue, Activity activity) {
return (int) (pxValue / getScreenMsg(activity).get(ScreenEnum.Density) + 0.5f);
}
/**
* 将dip或dp值转换为px值,保证尺寸大小不变
* @return
*/
public static int dip2px(float dipValue, Activity activity) {
return (int) (dipValue * getScreenMsg(activity).get(ScreenEnum.Density) + 0.5f);
}
/**
* 将px值转换为sp值,保证文字大小不变
*
* @return
*/
public static int px2sp(float pxValue, Activity activity) {
return (int) (pxValue / getScreenMsg(activity).get(ScreenEnum.ScaledDensity) + 0.5f);
}
/**
* 将sp值转换为px值,保证文字大小不变
* @return
*/
public static int sp2px(float spValue, Activity activity) {
return (int) (spValue * getScreenMsg(activity).get(ScreenEnum.ScaledDensity) + 0.5f);
}
/**
* 获取屏幕尺寸等信息
*/
public static Map<ScreenEnum,Integer> getScreenMsg(Activity activity){
DisplayMetrics metric = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels;
int height = metric.heightPixels;
float density = metric.density;///屏幕密度(0.75, 1.0 . 1.5)
int densityDpi = metric.densityDpi;///屏幕密度DPI(120/160/240/320/480)
float scaledDensity = metric.scaledDensity;
if (screenMap==null) screenMap = new HashMap<>();
screenMap.clear();
screenMap.put(ScreenEnum.Width,width);
screenMap.put(ScreenEnum.Height,height);
screenMap.put(ScreenEnum.Density,(int)density);
screenMap.put(ScreenEnum.DendityDpi,densityDpi);
screenMap.put(ScreenEnum.ScaledDensity, (int)scaledDensity);
return screenMap;
}
enum ScreenEnum{
Width,Height,Density,DendityDpi,ScaledDensity
}
}
dp转px的工具类DisplayUtil
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 北京时间10月2日,据《圣何塞水星新闻》报道,昨天勇士与掘金的季前赛开始之前,4届最佳防守球员本-华莱士把上赛季的...