1.dip:
2.px:
3.分辨率:
4.屏幕尺寸:
5.ppi:
6.dpi:
7.sp:
8.metrics.density:
Android 中的密度就是屏幕每英
寸所包含的像素數,通常以 dpi為單位。比如一個手機屏幕的寬是 2 英寸長是 3 英寸,如果
它的分辨率是 320*480 像素,那這個屏幕的密度就是 160dpi,如果它的分辨率是 640*960,
那這個屏幕的密度就是 320dpi,因此密度值越高的屏幕顯示的效果就越精細
注意在android中dpi所指的概念就是圖像上的ppi
metrics.density = dpi/160
1px = metrics.density * 1dp
public void setTextSize(float size) {
setTextSize(TypedValue.COMPLEX_UNIT_SP, size);
}
public void setTextSize(int unit, float size) {
Context c = getContext();
Resources r;
if (c == null)
r = Resources.getSystem();
else
r = c.getResources();
setRawTextSize(TypedValue.applyDimension(
unit, size, r.getDisplayMetrics()));
}
public static float applyDimension(int unit, float value,
DisplayMetrics metrics)
{
switch (unit) {
case COMPLEX_UNIT_PX:
return value;
case COMPLEX_UNIT_DIP:
return value * metrics.density;
case COMPLEX_UNIT_SP:
return value * metrics.scaledDensity;
case COMPLEX_UNIT_PT:
return value * metrics.xdpi * (1.0f/72);
case COMPLEX_UNIT_IN:
return value * metrics.xdpi;
case COMPLEX_UNIT_MM:
return value * metrics.xdpi * (1.0f/25.4f);
}
return 0;
}
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。