Android擷取裝置解析度的新方法 DisplayMetrics

來源:互聯網
上載者:User

標籤:inf   傳遞   通過   結果   裝置   androi   相容性   一個   idt   

Android 手機解析度多種多樣,作為開發人員,做出的軟體不能只兼顧一種或幾種手機,而要在盡量多的手機上達到另我們滿意的現實效果。Android在設計之初,系統 就被設計為一個可以在多種不同解析度的裝置上啟動並執行作業系統。對於應用程式來說,系統平台向它們提供的是一個穩定的,跨平台的運行環境,而關於如何將程式 以正確的方式顯示到它所啟動並執行平台上所需要的大部分技術細節,都由系統本身進行了處理,無需程式的幹預。但畢竟效果有限,有時候我們還需要自己針對裝置的 解析度對程式最佳化。

在做五子棋的過程中,為了使布局更具有相容性,找了一些關於解析度的資料,網上能找到的基本都是使用DisplayMetrics來擷取解析度。經過自己的測試,發現還有一種方法能擷取到解析度,那就是使用android.view包裡的Display類。

下面先介紹下DisplayMetrics的相關資料。

DisplayMetrics是android.util包裡的一個類,類提供了一種關於顯示的通用資訊,如顯示大小,解析度和字型。

為了擷取DisplayMetrics 成員,首先初始化一個對象如下:

DisplayMetricsmetrics dm = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(dm);

建構函式DisplayMetrics 不需要傳遞任何參數;調用getWindowManager()之後,會取得現有Activity 的Handle ,此時,getDefaultDisplay() 方法將取得的寬高維度存放於DisplayMetrics 對象中,而取得的寬高維度是以像素為單位(Pixel) , 像素 所指的是 絕對像素 而非 相對像素 。 其實現代碼如下:

private TextView textView;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

DisplayMetrics displayMetrics = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

String string = "手機螢幕解析度為:" + displayMetrics.widthPixels + "x" + displayMetrics.heightPixels;

textView = (TextView) findViewById(R.id.textView);

textView.setText(string);

}

下面介紹下我發現的另一種方法,那就是Display類,通過尋找API可知,該類在android.view包裡,描述為:Providesinformation about the display size and density。 使用方法如下:

private TextView textView;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Display display = getWindowManager().getDefaultDisplay();

String string = "手機的螢幕解析度為:" + display.getWidth() + "x"

+ display.getHeight();

textView = (TextView) findViewById(R.id.textView);

textView.setText(string);

}

兩種方法運行結果相同: Display對象不僅可以通過調用getWidth()和getHeight()來擷取螢幕解析度,還可以通過getMetrics()方法來擷取描述此螢幕尺寸和解析度的DisplayMetrics對象。

DisplayMetrics displayMetrics= new DisplayMetrics(); display.getMetrics(displayMetrics);

另外,getOrientation ()還可以獲得螢幕的方向,getRefreshRate()擷取螢幕重新整理率等。

Android擷取裝置解析度的新方法 DisplayMetrics

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.