Primero presentó a las respectivas definiciones:
ppi : Pixel por pulgada, el número de píxeles por pulgada, mayor es el valor, más delicado pantalla
dpi : puntos por pulgada, puntos por pulgada, más valor es decir, las imágenes más delicados altos
DP : DIP, pixel independiente de la densidad, Andrews unidad de desarrollo de la longitud que se utilice, la pantalla indica la densidad de píxeles de 160ppi 1DP longitud cuando 1px
ecuación:
2. tomar una densidad pantalla
3.
Obtener el ancho de la pantalla de número real dp
4. Obtener el número de la altura de la pantalla es operable dp región
5. Obtener el número de pantallas de ancho real dp
6. Obtiene la altura del número de dp verdadera pantalla
7. determina si una placa plana
Las unidades básicas de la mayoría de una imagen o fotografía en el pixel, pixeles, pantalla electrónica: px
pt : Point, punto, las unidades comunes de la industria de impresión, igual a 1/72 de pulgadappi : Pixel por pulgada, el número de píxeles por pulgada, mayor es el valor, más delicado pantalla
dpi : puntos por pulgada, puntos por pulgada, más valor es decir, las imágenes más delicados altos
DP : DIP, pixel independiente de la densidad, Andrews unidad de desarrollo de la longitud que se utilice, la pantalla indica la densidad de píxeles de 160ppi 1DP longitud cuando 1px
SP : Escala de trabajo del píxel independiente, los desarrolladores de Android Tamaño de la fuente de la unidad utilizada.
En donde px, pt, las unidades de DP de longitud, ppi y dpi es una unidad de densidad
densidad | LDPI | mdpi | IPAP | xhdpi | xxhdpi |
---|---|---|---|---|---|
densidad | 120 | 160 | 240 | 320 | 480 |
resolución | 240 * 320 | 320 * 480 | 480 * 800 | 720 * 1280 | 1080 * 1920 |
Tamaño del icono | 36 * 36 | 48 * 48 | 72 * 72 | 96 * 96 | 144 * 144 |
ecuación:
= El PPI
√ (Y * X * X + Y) / Z longitud fórmula X es el número de píxeles, Y es el número de píxeles de ancho, Z es el tamaño de la pantalla.
Por ejemplo: Iphone 6S 4,7 pulgadas una densidad de 2000 × 1125 píxeles
√
(2000 + 2000 * 1125. 1125. *) / 4,7 = 488ppi
Los métodos más comunes:
1.
Obtiene la altura de la pantalla
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. tomar una densidad pantalla
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. Obtener el número de la altura de la pantalla es operable dp región
public static float getScreenHeightDp(Activity activity) {
return getScreenHeight(activity) / getScreenDensity(activity);
}
5. Obtener el número de pantallas de ancho real dp
public static float getRealWidthDp(Activity activity) {
return getRealWidth(activity) / getScreenDensity(activity);
}
6. Obtiene la altura del número de dp verdadera pantalla
public static float getRealHeightDp(Activity activity) {
return getRealHeight(activity) / getScreenDensity(activity);
}
7. determina si una placa plana
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;
}