1.
WindowManager wm = (WindowManager) getContext() .getSystemService(Context.WINDOW_SERVICE); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight();
2.
WindowManager wm = this.getWindowManager(); int width = wm.getDefaultDisplay().getWidth(); int height = wm.getDefaultDisplay().getHeight();
3、 在一個Activity的onCreate方法中,寫入如下代碼:
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) int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。比如說,一部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" />
這樣的話,當前的Android程序就支持了多種分辨率,那么就可以得到正確的物理尺寸了。