手機螢幕尺寸


想取得手機螢幕尺寸可以用 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 意見:

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Affiliate Network Reviews