獲取螢幕的寬度和長度
阿新 • • 發佈:2019-01-03
android 獲取螢幕高度和寬度 的方法
我們需要獲取Android手機或Pad的螢幕的物理尺寸,以便於介面的設計或是其他功能的實現。下面就介紹講一講如何獲取螢幕的物理尺寸
下面的程式碼即可獲取螢幕的尺寸。
在一個Activity的onCreate方法中,寫入如下程式碼:
- DisplayMetrics metric =
- 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" />
[java] view plain copy print ?
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.DisplayMetrics;
- import android.widget.TextView;
- public class TextCanvasActivity extends Activity {
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- //setContentView(new MyView(this));
- //定義DisplayMetrics 物件
- setContentView(R.layout.main);
- DisplayMetrics dm = new DisplayMetrics();
- //取得視窗屬性
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- //視窗的寬度
- int screenWidth = dm.widthPixels;
- //視窗高度
- int screenHeight = dm.heightPixels;
- TextView textView = (TextView)findViewById(R.id.tv1);
- textView.setText("螢幕寬度: " + screenWidth + "\n螢幕高度: " + screenHeight);
- }
- }