Android手機分辨率多種多樣,作為開發者,做出的軟件不能只兼顧一種或幾種手機,而要在盡量多的手機上達到另我們滿意的現實效果。Android在設計之初,系統就被設計為一個可以在多種不同分辨率的設備上運行的操作系統。對於應用程序來說,系統平台向它們提供的是一個穩定的,跨平台的運行環境,而關於如何將程序以正確的方式顯示到它所運行的平台上所需要的大部分技術細節,都由系統本身進行了處理,無需程序的干預。但畢竟效果有限,有時候我們還需要自己針對設備的分辨率對程序優化。
在做五子棋的過程中,為了使布局更具有兼容性,找了一些關於分辨率的資料,網上能找到的基本都是使用DisplayMetrics來獲取分辨率。經過自己的測試,發現還有一種方法能獲取到分辨率,那就是使用android.view包里的Display類。
下面先介紹下DisplayMetrics的相關資料。
DisplayMetrics是android.util包里的一個類,類提供了一種關於顯示的通用信息,如顯示大小,分辨率和字體。
為了獲取DisplayMetrics 成員,首先初始化一個對象如下:
DisplayMetricsmetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics;
構造函數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()獲取屏幕刷新率等。
轉載自:http://blog.csdn.net/pku_android/article/details/7430788