android 獲取屏幕高度和寬度 的方法


我們需要獲取Android手機或Pad的屏幕的物理尺寸,以便於界面的設計或是其他功能的實現。下面就介紹講一講如何獲取屏幕的物理尺寸

    下面的代碼即可獲取屏幕的尺寸。
    在一個Activity的onCreate方法中,寫入如下代碼:

[java]  view plain ?
  1. DisplayMetrics metric = new DisplayMetrics();  
  2. getWindowManager().getDefaultDisplay().getMetrics(metric);  
  3. int width = metric.widthPixels;     // 屏幕寬度(像素)  
  4. int height = metric.heightPixels;   // 屏幕高度(像素)  
  5. float density = metric.density;      // 屏幕密度(0.75 / 1.0 / 1.5)  
  6. int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)  

 

 


    但是,需要注意的是,在一個低密度的小屏手機上,僅靠上面的代碼是不能獲取正確的尺寸的。比如說,一部240x320像素的低密度手機,如果運行上述代碼,獲取到的屏幕尺寸是320x427。因此,研究之后發現,若沒有設定多分辨率支持的話,Android系統會將240x320的低密度(120)尺寸轉換為中等密度(160)對應的尺寸,這樣的話就大大影響了程序的編碼。所以,需要在工程的AndroidManifest.xml文件中,加入supports-screens節點,具體的內容如下:
        

[html]  view plain ?
  1. <supports-screens  
  2.     android:smallScreens="true"  
  3.     android:normalScreens="true"  
  4.     android:largeScreens="true"  
  5.     android:resizeable="true"  
  6.     android:anyDensity="true" />  

    這樣的話,當前的Android程序就支持了多種分辨率,那么就可以得到正確的物理尺寸了。

 

 

[java]  view plain ?
  1. import android.app.Activity;  
  2. import android.os.Bundle;  
  3. import android.util.DisplayMetrics;  
  4. import android.widget.TextView;  
  5. public class TextCanvasActivity extends Activity {  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         //setContentView(new MyView(this));  
  9.             
  10.     //定義DisplayMetrics 對象    
  11.       setContentView(R.layout.main);    
  12.       DisplayMetrics  dm = new DisplayMetrics();    
  13.       //取得窗口屬性    
  14.       getWindowManager().getDefaultDisplay().getMetrics(dm);    
  15.          
  16.       //窗口的寬度    
  17.       int screenWidth = dm.widthPixels;    
  18.          
  19.       //窗口高度    
  20.       int screenHeight = dm.heightPixels;           
  21.      TextView textView = (TextView)findViewById(R.id.tv1);           
  22.       textView.setText("屏幕寬度: " + screenWidth + "\n屏幕高度: " + screenHeight);   
  23.     }  
  24. }  

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM