Android中像素相关

  今天又开始写Android了,很久没写android了,一些小知识点都忘记了,只能通过书本或者internet查找了。为了以后查找方便,就把这些小知识点记录下来。

  一、Android中像素单位dp、px、pt、sp的比较

  1.dp(dip): device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

  2.px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。

  3.pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用。

  4.sp: scaled pixels(放大像素). 主要用于字体显示best for textsize。

  因此,google推荐空间等相对距离一般使用dip,字体统一使用sp 

  、px和dp之间的相互转换

  public int Dp2Px(Context context, float dp);dp—> px
  { 
      final float scale = context.getResources().getDisplayMetrics().density; 
      return (int) (dp * scale + 0.5f); 
  }

 

  public int Px2Dp(Context context, float px) ;px—>dp
  { 
      final float scale = context.getResources().getDisplayMetrics().density; 
      return (int) (px / scale + 0.5f); 
  } 

  三、获取分辨率

  分辨率是屏幕图像的精密度,是指显示器所能显示的像素的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。可以把整个图像想象成是一个大型的棋盘,而分辨率的表示方式就是所有经线和纬线交叉点的数目。 

  分辨率决定了位图图像细节的精细程度。

 

  通常情况下,图像的分辨率越高,所包含的像素就越多,图像就越清晰,印刷的质量也就越好。同时,它也会增加文件占用的存储空间
 
  下面是在Android开发中获取屏幕分辨率:

    DisplayMetrics metric = new DisplayMetrics(); 
        getWindowManager().getDefaultDisplay().getMetrics(metric);         

        int width = metric.widthPixels;  // 屏幕宽度(像素) 

        int height = metric.heightPixels;  // 屏幕高度(像素) 
        float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5) 
        intdensityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)

   以上供参考,如果 UI 能够以 sp 为单位提供设计是最好的,如果设计中没有 sp的概念,则开发人员也可以通过适当的换算取近似值。

  

 

posted @ 2014-04-18 15:11  自强自律  阅读(154)  评论(0编辑  收藏  举报