Android基礎入門教程——3.6 響應系統設定的事件(Configuration類)

來源:互聯網
上載者:User

標籤:android   configurat   手機配置資訊   教程   事件   

Android基礎入門教程——3.6 響應系統設定的事件(Configuration類)

標籤(空格分隔): Android基礎入門教程

本節引言:

本節給大家介紹的Configuration類是用來描述手機裝置的配置資訊的,比如螢幕方向,
觸控螢幕的觸摸方式等,相信定製過ROM的朋友都應該知道我們可以在:
frameworks/base/core/java/android/content/res/Configuration.java
找到這個類,然後改下相關設定,比如調整預設字型的大小!有興趣可自行瞭解!
本節講解的Configuration類在我們Android開發中的使用~
API文檔:Configuration

1.Configuration給我們提供的方法列表
  • densityDpi:螢幕密度
  • fontScale:目前使用者設定的字型的縮放因子
  • hardKeyboardHidden:判斷硬鍵盤是否可見,有兩個可選值:HARDKEYBOARDHIDDEN_NO,HARDKEYBOARDHIDDEN_YES,分別是十六進位的0和1
  • keyboard:擷取當前關聯額鍵盤類型:該屬性的傳回值:KEYBOARD_12KEY(只有12個鍵的小鍵盤)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通鍵盤)
  • keyboardHidden:該屬性返回一個boolean值用於標識當前鍵盤是否可用。該屬性不僅會判斷系統的硬體鍵盤,也會判斷系統的軟鍵盤(位於螢幕)。
  • locale:擷取使用者當前的語言環境
  • mcc:擷取移動訊號的國家碼
  • mnc:擷取移動訊號的網路碼
    ps:國家代碼和網路代碼共同確定當前行動電話通訊電訊廠商
  • navigation:判斷系統上方嚮導航裝置的類型。該屬性的傳回值:NAVIGATION_NONAV(無導航)、
    NAVIGATION_DPAD(DPAD導航)NAVIGATION_TRACKBALL(軌跡球導航)、NAVIGATION_WHEEL(滾輪導航)
  • orientation:擷取系統螢幕的方向。該屬性的傳回值:ORIENTATION_LANDSCAPE(橫向螢幕)、ORIENTATION_PORTRAIT(豎向螢幕)
  • screenHeightDpscreenWidthDp:螢幕可用高和寬,用dp表示
  • touchscreen:擷取系統觸控螢幕的觸摸方式。該屬性的傳回值:TOUCHSCREEN_NOTOUCH(無觸控螢幕)、TOUCHSCREEN_STYLUS(觸摸筆式觸控螢幕)、TOUCHSCREEN_FINGER(接收手指的觸控螢幕)
2.寫個簡單例子測試下:

運行:

代碼實現:

public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView txtResult = (TextView) findViewById(R.id.txtResult);        StringBuffer status = new StringBuffer();        //①擷取系統的Configuration對象        Configuration cfg = getResources().getConfiguration();        //②想查什麼查什麼        status.append("densityDpi:" + cfg.densityDpi + "\n");        status.append("fontScale:" + cfg.fontScale + "\n");        status.append("hardKeyboardHidden:" + cfg.hardKeyboardHidden + "\n");        status.append("keyboard:" + cfg.keyboard + "\n");        status.append("keyboardHidden:" + cfg.keyboardHidden + "\n");        status.append("locale:" + cfg.locale + "\n");        status.append("mcc:" + cfg.mcc + "\n");        status.append("mnc:" + cfg.mnc + "\n");        status.append("navigation:" + cfg.navigation + "\n");        status.append("navigationHidden:" + cfg.navigationHidden + "\n");        status.append("orientation:" + cfg.orientation + "\n");        status.append("screenHeightDp:" + cfg.screenHeightDp + "\n");        status.append("screenWidthDp:" + cfg.screenWidthDp + "\n");        status.append("screenLayout:" + cfg.screenLayout + "\n");        status.append("smallestScreenWidthDp:" + cfg.densityDpi + "\n");        status.append("touchscreen:" + cfg.densityDpi + "\n");        status.append("uiMode:" + cfg.densityDpi + "\n");        txtResult.setText(status.toString());    }}
3.重寫onConfigurationChanged響應系統設定更改

該方法用於監聽系統設定的更改,是基於回調的時間處理方法,當系統的設定發生改變時就會自動觸發;
但是要注意一點,使用下面的方法監控的話,targetSdkVersion屬性最高只能設定為12,高於12的話,該方法不會被激發!這裡寫個橫豎屏切換的例子給大家參考參考,其他的可自行Google~

程式碼範例:簡單的一個按鈕,點擊後切換橫豎屏,然後Toast提示

運行:

實現代碼:

public class MainActivity extends Activity {      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          Button btn = (Button) findViewById(R.id.btncahange);          btn.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                  Configuration config = getResources().getConfiguration();                  //如果是橫屏的話切換成豎屏                  if(config.orientation == Configuration.ORIENTATION_LANDSCAPE)                  {                      MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);                  }                  //如果豎屏的話切換成橫屏                  if(config.orientation == Configuration.ORIENTATION_PORTRAIT)                  {                      MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);                  }              }          });      }      @Override      public void onConfigurationChanged(Configuration newConfig) {          super.onConfigurationChanged(newConfig);          String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE?"橫屏":"豎屏";          Toast.makeText(MainActivity.this, "系統螢幕方向發生改變 \n 修改後的方向為" + screen, Toast.LENGTH_SHORT).show();      }  }  

另外,還需要在AndroidManifest.xml添加下述內容:

許可權:
< uses-permission android:name=”android.permission.CHANGE_CONFIGURATION” />
在< activity標籤中添加:android:configChanges=”orientation”
將targetSdkVersion改為12以上的,12也可以

本節小結:

本節給大家講解了:Configuration類以及onConfigurationChanged響應系統設定更改,有個大概瞭解即可
後續用到我們再繼續深入~

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Android基礎入門教程——3.6 響應系統設定的事件(Configuration類)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.