最初はそれぞれの定義を紹介しました:
PPI :インチ当たりのピクセル、インチあたりのピクセルの数、より高い値が、より繊細な画面
解像度:インチ当たりDOT、インチあたりのドット数、より多くの価値高い、より繊細な画像である
DPは:長さのDIP、画素密度に依存しない、アンドリュースの現像ユニットを使用する場合1ピクセル、画面は160ppi長の1DP画素密度を示します
式:
2. 画面密度を取ります
3.
画面実数DPの幅を取得します。
4. 画面の高さの数を取得するように動作可能領域DPであります
5. 画面の真の幅DPの数を取得します。
6. 画面本物のDPの数の高さを取得します
7. 平板か否かを判断しました
ピクセル、ピクセル、電子画面上の絵や写真の最も基本的な単位:ピクセル
PT :ポイントし、印刷業界の一般的な単位、インチの1/72に等しいPPI :インチ当たりのピクセル、インチあたりのピクセルの数、より高い値が、より繊細な画面
解像度:インチ当たりDOT、インチあたりのドット数、より多くの価値高い、より繊細な画像である
DPは:長さのDIP、画素密度に依存しない、アンドリュースの現像ユニットを使用する場合1ピクセル、画面は160ppi長の1DP画素密度を示します
SP :画素独立、使用ユニットのAndroidの開発者は、フォントサイズのスケールの作品。
PX、PT、長さ、PPIとDPIのDP単位は単位密度であることを特徴とします
密度 | LDPI | MDPI | hdpi | xhdpi | xxhdpi |
---|---|---|---|---|---|
密度 | 120 | 160 | 240 | 320 | 480 |
解像度 | 240 * 320 | 320×480 | 480 * 800 | * 1280 720 | * 1920 1080 |
アイコンのサイズ | 36 * 36 | 48 * 48 | 72 * 72 | 96 * 96 | 144 * 144 |
式:
PPI =
√(Y * X * X + Y)/ Zの式の長さXは、ピクセルの数であり、Yは、画素数がZは、画面サイズで、幅です。
たとえば、次のiPhoneは4.7インチ6S、2000×1125画素の濃度
√
(* 1125 1125 * 2000 + 2000)/ 4.7 = 488ppi
一般的な方法:
1.
画面の高さを取得します。
public int getRealHeight(Activity activity) {
int heightPixels = 0;
Display display = activity.getWindowManager().getDefaultDisplay();
final int VERSION = Build.VERSION.SDK_INT;
if(VERSION < 13) {
display.getHeight();
}else if (VERSION == 13) {
try {
heightPixels = (Integer) Display.class.getMethod("getRawHeight").invoke(display);
} catch (Exception e) {
}
} else {
Point realSize = new Point();
try {
Display.class.getMethod("getRealSize", Point.class).invoke(display, realSize);
heightPixels = realSize.y;
} catch (Exception e) {
}
}
return heightPixels;
}
2. 画面密度を取ります
public static float getScreenDensity(Activity activity) {
DisplayMetrics displayMetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
return displayMetrics.density;
}
public static float getScreenWidthDp(Activity activity) {
return getScreenWidth(activity) / getScreenDensity(activity);
}
4. 画面の高さの数を取得するように動作可能領域DPであります
public static float getScreenHeightDp(Activity activity) {
return getScreenHeight(activity) / getScreenDensity(activity);
}
5. 画面の真の幅DPの数を取得します。
public static float getRealWidthDp(Activity activity) {
return getRealWidth(activity) / getScreenDensity(activity);
}
6. 画面本物のDPの数の高さを取得します
public static float getRealHeightDp(Activity activity) {
return getRealHeight(activity) / getScreenDensity(activity);
}
7. 平板か否かを判断しました
public static boolean isTablet(Activity activity) {
return isMoreThan6Inch(activity) && isScreenSizeLarge(activity);
}
/**
* 判断是否大于6英寸
* @param activity
* @return
*/
public static boolean isMoreThan6Inch(Activity activity) {
return getScreenInch(activity) >= 6.0;
}
/**
* 判断设备是否为大尺寸屏幕
*
* @param context
* @return
*/
public static boolean isScreenSizeLarge(Context context) {
return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
}