想取得手機螢幕尺寸可以用 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( ) 會重新執行,所以在裡面的資料都會重新讀取,
0 意見:
張貼留言