android 增加display 安卓display_android 增加display

一:Android 布局单位 dip  dp  sp  px 总结



在android的xml布局当中,经常会看到dip、dp、px、sp等单位,知道它们的作用才可以更加精确的布局UI。

dip:英文device independent pixels(设备独立像素)。所有的设备都有一个统一的dip大小(480*320),就是说,android的dip就是把屏幕的高分成了480个dip,宽分成了320个dip,每个dip在高中表示屏幕的1/480,在宽中表示屏幕的1/320。这样做的好处显而易见,我们可以使应用UI在不同大小的屏幕上都能正常的显示。

dp:完全等同于dip。

px:pixels,就是绝对像素。大小固定,不会随着屏幕不同而改变。

sp:scaled pixels,放大像素,主要用于字体显示,也是为了字体显示可以适应不同大小尺寸的屏幕。


二:


 


http://www.tuyiyi.com/ued/app/22438.html   Android适配UI文章


三:Android 屏幕常用介绍

传统意义上,一般是是这么认为的:

ldpi: 对应分辨率240×320

mdpi: 对应分辨率320×480

hdpi:对应分辨率480×800或480×854

 我们经常说的分辨率和ppi的关系,其实他们是没多大关系。分辨率只是说明屏幕上有多少个像素点,这也跟屏幕大小有关系。当然对于屏幕大小相同的来讲  分辨率越高 ppi越大,如果脱离了屏幕的物理尺寸谈分辨率是没有任何意义的。就像平板的分辨率比手机的大,那是因为平板个大呀。从颜色显示的细腻程度上讲并不见得比手机强。

但实际上没有这么简单,直接看官方资料的下标,可以看到其实ldpi一样由480×800,甚至还有1024×600

 

低密度(ldpi 120)

中密度(mdpi 160)

高密度(hdpi 240)

超高密度(320 xhdpi)

小屏幕

QVGA (240×320)

 

480×640

 

中屏幕

WQVGA400 (240×400)

WQVGA432 (240×432)

HVGA (320×480)

WVGA800 (480×800)

WVGA854 (480×854)

600×1024

640×960

大屏幕

WVGA800** (480×800)

WVGA854** (480×854)

WVGA800* (480×800)

WVGA854* (480×854)

600×1024

 

 

超大屏幕

1024×600

WXGA (1280×800)

1024×768

1280×768

1536×1152

1920×1152

1920×1200

2048×1536
2560×1536
2560×




dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)
但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因为可以支持多种分辨率的手机.



以下是这两个单位的概念:
px (pixels)像素 –一个像素通常被视为图像的最小的完整采样,这个用的比较多,特别是web开发,页面基本都是使用像素作为单位的.
dip或dp (device independent pixels)设备独立像素 — 这个和设备硬件有关,一般我们为了支持手机上多种分辨率,如WVGA、HVGA和QVGA,都会使用dip作为长度的单位



Android开发我们一般都可以不需要使用px的,但是某一些控件的属性没有直接支持dip,像下面的代码



    1. android.view.ViewGroup.LayoutParams.height
    2. android.view.ViewGroup.LayoutParams.width


    复制代码


    上面这两个属性的单位为像素,但是为了兼容多种 分辨率 的手机,我们需要最好使用dip,时候我们可以调用以下的代码进行转换.

      1. int heightPx= DisplayUtil.dip2px(this, 33);
      2. mTabHost.getTabWidget().getChildAt(i).getLayoutParams().height = heightPx;


      复制代码




      以上代码可以在我另一篇文章看得到.该功能是设置Tab的高度,单位是像素.以上的

      单位转换 是为了支持多分辨率手机的.

      该文章的地址 :

      [ 
       
      1. /**
      2. * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
      3. */
      4. public static int dip2px(Context context, float dpValue) {
      5. final float scale = context.getResources().getDisplayMetrics().density;
      6. return (int) (dpValue * scale + 0.5f);
      7. }
      8. 
      9. /**
      10. * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
      11. */
      12. public static int px2dip(Context context, float pxValue) {
      13. final float scale = context.getResources().getDisplayMetrics().density;
      14. return (int) (pxValue / scale + 0.5f);
      15. }

      复制代码







      Android中将像素转换为sp/dp



      发表于 2012 年 03 月 13 日微風



      代码与范例:



      12345678

      private static final float DIP = 16.0f;
       
      // 将dip转换为pixel,将pixel转换为dip只需将算式进行逆运算即可
      final float scale = getContext().getResources().getDisplayMetrics().density;
      int pixel = (int) (DIP * scale + 0.5f);
       
      // 获取屏幕高度的像素值
      getContext().getResources().getDisplayMetrics().heightPixels;



      说明:将像素值与Android的尺寸单位dp转换。dp/sp的意义基本相同,都是与屏幕密度无关的尺寸单位,只不过前者用于字体尺寸以外的场合,而后者用于指定字体尺寸。在不同情况下,dp和sp所表示的尺寸会有些不同,这部分内容将在之后补充。