android屏幕分辨率及自动匹配相关

  1. 当android屏幕密度为160(1英寸上有160个像素点)时:1dp=1px
    1. pixs =dips * (densityDpi/160)

    2. dips=(pixs*160)/densityDpi

    3. public static int dip2px(Context context, float dip){   
              final float scale = context.getResources().getDisplayMetrics().density;   
              return (int)(dip * scale + 0.5f);   
      }   
      public static int px2dip(Context context, float px){   
              final float scale = context.getResource().getDisplayMetrics().density;   
              return (int)(px / scale + 0.5f);   
      }   
      

  2. drawable-
    1. 文件夹  -->  屏幕密度
    2. ldpi  --> 120
    3. mdpi -->  160
    4. hdpi  -->  240
    5. xhdpi  -->  320
  3. WVGAHVGAQVGA
    1. VGA(Video Graphics Array),显示标准为640*480分辨率
    2. WVGA(Wide VGA):480*800
    3. HVGA(Half VGA):320*480
    4. QVGA(Quarer VGA):240*320
  4. drawable-  -->  分辨率(系统会根据机器的分辨率到这几个文件夹找对应的图片资源)
    1. ldpi  -->  QVGA(240*320)
    2. mdpi  -->  HVGA(320*480)
    3. hdpi  -->  WVGA(480*800) ||  FWVGA(480*854
    4. xhdpi  -->  至少960*720
    5. xxhdpi  -->  1280*720
  5. layout-
    1. small -->  屏幕小于3英寸
    2. normal  -->  屏幕小于4.5英寸
    3. large  -->  4英寸到7英寸
    4. xlarge -->  7英寸到10英寸
  6. AndroidManifest.xml
    1. <supports-screens 
      android:largeScreens="true" 
      android:normalScreens="true" 
      android:smallScreens="true" 
      android:anyDensity="true"/> 
    2. android:anyDensity:是否支持多种不同密度的屏幕
      1. true  -->  根据屏幕分辨率自动匹配
      2. false  -->  l - m - h - xh - xxh
        1. hdpi、mdpi、ldpi有同一张图片资源的不同密度表示,系统选择加载mdpi
        2. hdpi有图片而其它文件夹没有对应图片资源,选择hdpi
        3. hdpi、mdpi有图片资源而ldpi没有,系统选择mdpi
    3. android:largeScreens:是否支持大屏幕
      1. false --> 当屏幕为大屏幕时,系统默认加载layout-normal && drawable-mdpi
    4. android:smallScreens
      1. false  -->   当屏幕为小屏幕时,系统默认加载layout-normal && drawable-mdpi
  7. 编程技巧
    1. 布局文件中定义长度的时候,最好使用wrap_content,fill_parent, 或者dp 进行描述,这样可以保证在屏幕上面展示的时候有合适的大小 
    2. 为不同屏幕密度的手机,提供不同的位图资源,可以使得界面清晰无缩放。 
      对应bitmap 资源来说,自动的缩放有时会造成放大缩小后的图像变得模糊不清,这是就需要应用为不同屏幕密度配置提供不同的资源:为高密度的屏幕提供高清晰度的图像等。 
    3. 不要使用AbsoluteLayout 
    4. 像素单位都使用DIP,文本单位使用SP 
  8. 屏幕像素 && 密度
    1. DisplayMetrics metric = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(metric); 
      int width = metric.widthPixels;// 屏幕宽度(像素) 
      int height = metric.heightPixels;// 屏幕高度(像素) -->  分辨率= width*height
      float density = metric.density;// 屏幕密度(0.75 / 1.0 / 1.5) 
      int densityDpi = metric.densityDpi;// 屏幕密度DPI(120 / 160 / 240) 
转载请注明出处:http://blog.csdn.net/zifeng1203s/article/details/43115433


版权声明:本文为zifeng1203s原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。