想取得手機螢幕尺寸可以用 DisplayMetrics 搭配 WindowManager 取得, 而 WindowManager 也能從 Display 取得手機旋轉方向,螢幕更新頻率等等,如下
GetDisplaySize.java
   1:  package com.example.helloworld;
   2:   
   3:  import android.app.Activity;
   4:  import android.os.Bundle;
   5:  import android.util.DisplayMetrics;
   6:  import android.view.Display;
   7:  import android.widget.TextView;
   8:   
9: public class GetDisplaySize extends Activity {
  10:   
11: final String tLog = "Trace Log";
  12:   
  13:      TextView tv1;
  14:   
  15:      @Override
16: public void onCreate(Bundle savedInstanceState) {
  17:   
  18:          super.onCreate(savedInstanceState);
  19:   
  20:          setContentView(R.layout.activity_main);
  21:   
  22:          tv1 = (TextView) findViewById(R.id.textView1);
  23:   
24: DisplayMetrics metr = new DisplayMetrics();
  25:          getWindowManager().getDefaultDisplay().getMetrics(metr);
  26:   
  27:          Display dplay = getWindowManager().getDefaultDisplay();
  28:   
29: tv1.setText("Width: " + metr.widthPixels + " Height: " //get width , height
30: + metr.heightPixels + "\n" + "Rotation: " + dplay.getRotation() //get rotation
31: + " RefreshRate: " + dplay.getRefreshRate()); // get refreshrate
  32:   
  33:      }
  34:  }
第 24 行建立 DisplayMetrics 物件 metr
第 25 行藉由 WindowManager 傳入 metr 物件
第 27 行建立 Display 物件 dplay
第 29 行顯示 width 和 height
第 30 ~ 31 行顯示畫面旋轉方向和更新率(每秒)
為了方便範例的使用,把 GetDisplaySize.java 放入 和 HelloWorld.java 相同的套件目錄,並修改 AndroidManifest.xml如下
1: <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2: package="com.example.helloworld"
3: android:versionCode="1"
4: android:versionName="1.0" >
   5:   
6: <uses-sdk
7: android:minSdkVersion="8"
8: android:targetSdkVersion="15" />
   9:   
10: <application
11: android:icon="@drawable/ic_launcher"
12: android:label="@string/app_name"
13: android:theme="@style/AppTheme" >
14: <activity
15: android:name=".MainActivity"
16: android:label="@string/title_activity_main" >
  17:   
18: <!--
19: <intent-filter>
20: <action android:name="android.intent.action.MAIN" />
  21:  
22: <category android:name="android.intent.category.LAUNCHER" />
23: </intent-filter>
24: -->
25: </activity>
26: <activity
27: android:name=".GetDisplaySize"
28: android:label="@string/title_activity_main2" >
29: <intent-filter>
30: <action android:name="android.intent.action.MAIN" />
  31:   
32: <category android:name="android.intent.category.LAUNCHER" />
33: </intent-filter>
34: </activity>
35: </application>
  36:   
37: </manifest>
第 14 ~ 25 行為舊的 HelloWorld , 把 19 ~ 23 行註解掉,代表開始執行的 Activity 不是在此
第 26 ~ 34 行為新的 GetDisplaySize ,加入 30 ~32 行 ,代表開始執行的 Activity 在此
結果為
第 1 種旋轉畫面
第 2 種旋轉畫面
當手機有設定自動旋轉畫面時,旋轉手機, onCreate( ) 會重新執行,所以在裡面的資料都會重新讀取,




 Posted in:  
0 意見:
張貼留言