`

android ui的几个概念:px,dip(dp),sp,dpi,分辨率等

阅读更多

android ui的几个概念:px,dip(dp),sp,dpi,分辨率等

 

1.px (pixels)像素 – 是像素,就是屏幕上实际的像素点单位。
 dip或dp (device independent pixels)设备独立像素, 与设备屏幕有关。
 sp (scaled pixels — best for text size):类似dp, 主要处理字体的大小。

dpi(dot per inch):屏幕像素密度,每英寸多少像素

density:density表示每英寸有多少个显示点(逻辑值),它的单位是dpi

2.dpi是屏幕像素密度。就是1英寸上像素点的个数。对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚。比如iphone4的视网膜级的屏幕肯定比iphone 3gs的屏幕像素密度高的多。

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.dip值 =(dpi值/160)* pixel值

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

 

public class DisplayUtilHelper {  
        /** 
         * 将px值转换为dip或dp值,保证尺寸大小不变 
         *  
         * @param pxValue 
         * @param scale 
         *            (DisplayMetrics类中属性density) 
         * @return 
         */  
        public static int px2dip(Context context, float pxValue) {  
            final float scale = context.getResources().getDisplayMetrics().density;  
            return (int) (pxValue / scale + 0.5f);  
        }  
      
        /** 
         * 将dip或dp值转换为px值,保证尺寸大小不变 
         *  
         * @param dipValue 
         * @param scale 
         *            (DisplayMetrics类中属性density) 
         * @return 
         */  
        public static int dip2px(Context context, float dipValue) {  
            final float scale = context.getResources().getDisplayMetrics().density;  
            return (int) (dipValue * scale + 0.5f);  
        }  
      
        /** 
         * 将px值转换为sp值,保证文字大小不变 
         *  
         * @param pxValue 
         * @param fontScale 
         *            (DisplayMetrics类中属性scaledDensity) 
         * @return 
         */  
        public static int px2sp(Context context, float pxValue) {  
            final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;  
            return (int) (pxValue / fontScale + 0.5f);  
        }  
      
        /** 
         * 将sp值转换为px值,保证文字大小不变 
         *  
         * @param spValue 
         * @param fontScale 
         *            (DisplayMetrics类中属性scaledDensity) 
         * @return 
         */  
        public static int sp2px(Context context, float spValue) {  
            final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;  
            return (int) (spValue * fontScale + 0.5f);  
        }  
  }  

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics