獲取手機屏幕DisplayMetrics屬性多種方法



1. Dispaly android

Java代碼
  1. WindowManager windowManager = getWindowManager();   
  2.   
  3. Display display = windowManager.getDefaultDisplay();   
  4.   
  5. screenWidth = display.getWidth();   
  6.   
  7. screenHeight = display.getHeight();  



2.DisplayMetrics canvas

Java代碼
  1. DisplayMetrics dm = new DisplayMetrics();   
  2.   
  3. this.getWindowManager().getDefaultDisplay().getMetrics(dm);//this指當前activity   
  4.   
  5. screenWidth =dm.widthPixels;   
  6.   
  7. screenHeight =dm.heightPixels;  

以上兩種方法在屏幕未顯示的時候,仍是處於0的狀態,即要在setContentView調用以後纔有效。



3.canvas

在onDraw中由canvas來得到 this

Java代碼  spa

  1. screenWidth =canvas.getWidth();   
  2.   
  3. screenHeight =canvas.getHeight();  



而視圖的高寬則是大多數人所認爲的canvas的高寬,其實他所指的是除了任務欄和狀態欄的高寬,主要有以下方法:

1. xml

Java代碼 
  1. viewWidth=this.getWidth();   
  2.   
  3. viewHeight=this.getHeight();  



2.重寫view的onSizeChanged,該方法會在onCreate以後,onDraw以前調用 ip

Java代碼 
  1. protected void onSizeChanged(int w, int h, int oldw, int oldh) {   
  2. viewHeight=h;   
  3. viewWidth=w;   
  4. super.onSizeChanged(w, h, oldw, oldh);   
  5. }  

任務欄、狀態欄的高寬的高寬我目前還不清楚,不過從網上查找可知: get

引用
frameworks/core/res/values/themes.xml
<item name="windowTitleSize">25dip</item>
frameworks/core/res/values/dimens.xml
<dimen name="status_bar_height">25dip</dimen>

在一個activity中若是要獲取高寬,最好是放在onSizeChanged中比較保險。

以上是我對android得到高寬的一點總結,若是有錯誤的地方,歡迎留言探討。

另外,還有對屏幕顯示的一些設置:

//設置爲無標題 it

Java代碼 
  1. requestWindowFeature(Window.FEATURE_NO_TITLE);  



//設置爲全屏模式getWindow().setFlags io

Java代碼 
  1. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  



//設置爲橫屏 request

Java代碼 
  1. setRequesteOrientation(ActivityInfo.SCREEN_ORIENTATION_LADSCAPE);
相關文章
相關標籤/搜索