Android----屏幕的宽度、高度、密度、像素

一、关于获取Android 手机屏幕的宽度、高度,首先要了解WindowManager和DesplayMetrics类。

 

  1、WindowManager

   http://blog.csdn.net/liranke/article/details/5435488,这里讲解了WindowManager的用法

  2、DisplayMetrics

  http://blog.csdn.net/java2009cgh/article/details/8182817,这里讲解了DisplayMetrics

 

二、获取屏幕的宽、高、密度,有三种方法。

 

  1、通过WindowManager获取

1 DisplayMetrics dm = new DisplayMetrics();
2 getWindowManager().getDefaultDisplay().getMetrics(dm);
3 Log.i("info", "DisplayMetrics.width ==" + dm.widthPixels);
4 Log.i("info", "DisplayMetrics.height ==" + dm.heightPixels);
5 Log.i("info", "DisplayMetrics.density ==" + dm.density);
6 Log.i("info", "DisplayMetrics.densityDpi ==" + dm.densityDpi);

 

  2、通过Resource获取

1         DisplayMetrics dm1 = new DisplayMetrics();
2         dm1 = getResources().getDisplayMetrics();
3         Log.i("info", "DisplayMetrics.width ==" + dm1.widthPixels);
4         Log.i("info", "DisplayMetrics.height ==" + dm1.heightPixels);
5         Log.i("info", "DisplayMetrics.density ==" + dm1.density);
6         Log.i("info", "DisplayMetrics.densityDpi ==" + dm1.densityDpi);    

  3、通过屏幕的默认分辨率

1         int width = getWindowManager().getDefaultDisplay().getWidth();
2         int height = getWindowManager().getDefaultDisplay().getHeight();

  

 

三、注意

 

  1、有些网友说书写getWindowManager()后eclipse会报错,说没有getWindowManager()这个方法,

  这是什么原因呢?因为getWindowManager()这个方法是在类Activity中的,

  如果你自己编写的类不是继承于类Activity,那么必然在这个类中书写代码就不能用到getWindowManager()这个方法。

  所以当你自己编写的类不是继承于类Activity,那么就只能用第二种方法(通过Resource获)获取手机屏幕的大小。

 

  2、在android:minSdkVersion=”3″时,还没有多分辨率的概念,因而此时,

  DisplayMetrics得到的宽和高是与密度相关的,也就是说此时得到的宽和高都是以dp或dip为单位的,

  要转换成px才是我们通常据说的分辨率。自android1.6及以后,DisplayMetrics得到的宽和高都是以px为单位的,不需要转换。

   

posted @ 2013-12-05 13:05  妈蛋  阅读(1173)  评论(0)    收藏  举报