好贷网好贷款

Android UI 设计:pixel dip dpi sp density 相关解释和转换

发布时间:2016-12-3 23:50:51 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Android UI 设计:pixel dip dpi sp density 相关解释和转换",主要涉及到Android UI 设计:pixel dip dpi sp density 相关解释和转换方面的内容,对于Android UI 设计:pixel dip dpi sp density 相关解释和转换感兴趣的同学可以参考一下。

1. px (pixels)像素 – 是像素,就是屏幕上实际的像素点单位。 dip或dp (device independent pixels)设备独立像素,与设备屏幕有关。 sp (scaled pixels — best for text size):类似dp,主要处理字体的大小。 dpi(dot per inch):屏幕像素密度,每英寸多少像素 density:density表示每英寸有多少个显示点(逻辑值),它的单位是dpi 在 android api 有跟这个同名的成员,获取方法: float value = context.getResources().getDisplayMetrics().density; 2. dpi是屏幕像素密度。就是1英寸上像素点的个数。 对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚。 3. sp由于是放大像素,主要是用于字体显示。 由此根据google的建议,TextView的字体大小最好用sp做单位 4. dp是与密度无关,sp除了与密度无关外,还与scale无关。 如果屏幕密度为160,这时dp和sp和px是一样的。即此时1dp=1sp=1px 但如果使用px作单位,如果屏幕大小不变(假设还是3.2寸),而屏幕密度变成了320。 那么原来TextView的宽度设成160px,在密度为320的3.2寸屏幕里看要比在密度为160的3.2寸屏幕上看短了一半。 但如果设置成160dp或160sp的话,系统会自动将width属性值设置成320px的。 也就是160 * 320 / 160。其中320 / 160可称为密度比例因子。 也就是说,如果使用dp和sp,系统会根据屏幕密度的变化自动进行转换。 5. pixel和dip计算公式:pixel值 =(dpi值/160)* dip值 /** * 根据手机的分辨率从 dp 的单位 转成为 px(像素) */ public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f); } /** * 根据手机的分辨率从 px(像素) 的单位 转成为 dp */ public static int px2dip(Context context, float pxValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (pxValue / scale + 0.5f); } 6. 像素密度和分辨率是两个不同的概念 分辨率是总的像素点,像素密度是单位长度的像素点 HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120 VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480  HVGA:Half-size VGA;即:VGA的一半,分辨率为480×320; QVGA:Quarter VGA;即:VGA的四分之一,分辨率为320×240; WVGA:Wide Video Graphics Array;即:扩大的VGA,分辨率为800×480像素; WQVGA:Wide Quarter VGA; 即:扩大的QVGA,分辨率比QVGA高,比VGA低,一般是:400×240,480×272

上一篇:关于[]静态数组和new分配的动态数…
下一篇:c++用vector对结构体排序

相关文章

相关评论