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为单位的,不需要转换。