それらのものPX、PT、PPI、DPI、DPについて

最初はそれぞれの定義を紹介しました:

ピクセル、ピクセル、電子画面上の絵や写真の最も基本的な単位:ピクセル

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;  
}

3. 画面実数DPの幅を取得します。
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;  
}












公開された39元の記事 ウォン称賛19 ビュー60000 +

おすすめ

転載: blog.csdn.net/u010090644/article/details/51803155