/** * Copyright (C) 2017 Baidu Inc. All rights reserved. */ package com.example.datalibrary.utils; import android.content.Context; import android.os.Build; import android.text.TextUtils; /** * 显示设备信息工具类 */ public final class DensityUtils { /** * 四舍五入 */ private static final float DOT_FIVE = 0.5f; /** * portrait degree:90 */ private static final int PORTRAIT_DEGREE_90 = 90; /** * portrait degree:270 */ private static final int PORTRAIT_DEGREE_270 = 270; /** * 需要比较的设置型号 */ private static final String[] BUILD_MODELS = { "i700v", // 斐讯i700v "A862W", // 夏新A862W "V8526" // 桑菲V8526 }; /** * Private constructor to prohibit nonsense instance creation. */ private DensityUtils() { } /** * sp转px. * * @param context context * @param spValue spValue * @return 换算后的px值 */ public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); } /** * dip转换成px * * @param context Context * @param dip dip Value * @return 换算后的px值 */ public static int dip2px(Context context, float dip) { float density = getDensity(context); return (int) (dip * density + DensityUtils.DOT_FIVE); } /** * px转换成dip * * @param context Context * @param px px Value * @return 换算后的dip值 */ public static int px2dip(Context context, float px) { float density = getDensity(context); return (int) (px / density + DOT_FIVE); } /** * 得到显示宽度 * * @param context Context * @return 宽度 */ public static int getDisplayWidth(Context context) { return context.getResources().getDisplayMetrics().widthPixels; } /** * 得到显示高度 * * @param context Context * @return 高度 */ public static int getDisplayHeight(Context context) { return context.getResources().getDisplayMetrics().heightPixels; } /** * 得到显示密度 * * @param context Context * @return 密度 */ public static float getDensity(Context context) { return context.getResources().getDisplayMetrics().density; } /** * 得到DPI * * @param context Context * @return DPI */ public static int getDensityDpi(Context context) { return context.getResources().getDisplayMetrics().densityDpi; } /** * 判断当前Android系统摄像头旋转多少度 * * @return 当前Android系统能竖着屏幕, * 正常应该旋转90度, * 但是斐讯i700v、夏新A862W、桑菲V8526需要旋转270度 */ public static int getPortraitDegree() { int degree = PORTRAIT_DEGREE_90; // 为了更好的扩展更多的特殊设置型号,将要比较的设备型号提成一个数组,遍历这个数据。 for (String model : BUILD_MODELS) { if (TextUtils.equals(model, Build.MODEL)) { degree = PORTRAIT_DEGREE_270; break; } } return degree; } }