一般我们需要的宽度和高度都是需要dp格式,但是在网上找了一大堆的资料基本上得到的宽度和高度都是像素(Pixels)型的宽度和高度,与我们所需要的不一样,后面经过查找资料终于找到解决办法,下面上代码,老鸟勿喷![安静](http://static.blog.csdn.net/xheditor/xheditor_emot/default/quiet.gif)
- public void getAndroiodScreenProperty(){
- WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
- DisplayMetrics dm = new DisplayMetrics();
- wm.getDefaultDisplay().getMetrics(dm);
- int width = dm.widthPixels;
- int height= dm.heightPixels;
- float density = dm.density;
- int densityDpi = dm.densityDpi;
-
- int screenWidth = (int) (width/density);
- int screenHeight = (int)(height/density);
- Log.e("123", screenWidth + "======" + screenHeight);
- }
需要注意的是,在一个低密度的小屏手机上,仅靠上面的代码是不能获取正确的尺寸的。
比如说,一部240x320像素的低密度手机,如果运行上述代码,获取到的屏幕尺寸是320x427。
因此,研究之后发现,若没有设定多分辨率支持的话,
Android系统会将240x320的低密度(120)尺寸转换为中等密度(160)对应的尺寸,
这样的话就大大影响了程序的编码。
所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens节点,如下:
- <!-- 得到屏幕正常的物理尺寸 -->
- <supports-screens
- android:smallScreens="true"
- android:normalScreens="true"
- android:largeScreens="true"
- android:resizeable="true"
- android:anyDensity="true" />