Configuration類用于描述手機設(shè)備上的配置信息。
為海門等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及海門網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、海門網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
通過調(diào)用Activity的如下方法來獲取系統(tǒng)的Configuration對象。
Configuration cfg = getResources().getConfiguration();
該對象提供了如下常用屬性來獲取系統(tǒng)的配置信息。
public float fontScale:獲取當(dāng)前用戶設(shè)置的字體的縮放因子。
public int keyboard:獲取當(dāng)前設(shè)備所關(guān)聯(lián)的鍵盤類型。該屬性可能返回如下值:
KEYBOARD_NOKEYS、KEYBOARD_QWERTY普通電腦鍵盤、KEYBOARD_12KEY(只有12個建的小鍵盤)。
public int keyboardHidden:該屬性返回一個boolean值用于標(biāo)識當(dāng)前鍵盤是否可用。該屬性不僅會判斷系統(tǒng)地硬件鍵盤,也會判斷系統(tǒng)的軟鍵盤(位于屏幕上)。如果該系統(tǒng)的硬件鍵盤不可用,但軟鍵盤可用,該屬性也會返回KEYBOARDHIDDEN_NO,只有當(dāng)兩個鍵盤都不可用時才會返回KEYBOARDHIDDEN_YES.
public Locale locale:獲取用戶當(dāng)前的Locale。
public int mcc:獲取移動信號的國家碼。
public int mnc:獲取移動信號的網(wǎng)絡(luò)碼。
public int navigation:判斷系統(tǒng)上方向?qū)Ш皆O(shè)備的類型。該屬性可能返回如NAVIGATION_NONAY(無導(dǎo)航)、NAVIGATION_DPAD(DPAD導(dǎo)航)、NAVIGATION_TRACKBALL(軌跡球?qū)Ш?、NAVIGATION_WHEEL(滾輪導(dǎo)航)等屬性值。
public int orientation:獲取系統(tǒng)屏幕的方向,該屬性可能返回ORIENTATION_LANDSCAPE(橫向屏幕)、ORIENTATION_PORTRAIT(豎向屏幕)、ORIENTATION_SQUARE(方形屏幕)等屬性值。
public int touchscreen:獲取系統(tǒng)觸摸屏的觸摸方式。該屬性可能返回TOUCHSC_REEN_NOTOUCH(無觸摸屏)、TOUCHSCREEN_STYLUS(觸摸筆式的觸摸屏)、TOUCHSCREEN_FINGER(接受手指的觸摸屏)。
實例:獲取系統(tǒng)設(shè)備的狀態(tài)
MainActivity.java
package com.example.configurationtest; public class MainActivity extends Activity { EditText ori; EditText navigation; EditText touch; EditText mnc; Button bn; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 獲取應(yīng)用界面中的界面組件 ori = (EditText) findViewById(R.id.ori); navigation = (EditText) findViewById(R.id.navigation); touch = (EditText) findViewById(R.id.touch); mnc = (EditText) findViewById(R.id.mnc); bn = (Button) findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener() { // 為按鈕綁定事件監(jiān)聽器 public void onClick(View v) { // 獲取系統(tǒng)的Configuration對象 Configuration cfg = getResources().getConfiguration(); String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "橫向屏幕" : "豎向屏幕"; String mncCode = cfg.mnc + ""; String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "沒有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滾輪方向控制" : cfg.orientation == Configuration.NAVIGATION_DPAD ? "方向鍵控制方向" : "軌跡球控制方向"; String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH ? "無觸摸屏" : "支持觸摸屏"; ori.setText(screen); mnc.setText(mncCode); navigation.setText(naviName); touch.setText(touchName); } }); } }
activity_main.xml
如果系統(tǒng)需要監(jiān)聽系統(tǒng)設(shè)置的更改,則可以考慮重寫Activity的 onConfigurationChanged(Configuration newConfig)方法,該方法是一個基于回調(diào)的事件處理方法:當(dāng)系統(tǒng)設(shè)置發(fā)生改變時,該方法會被自動觸發(fā)。
實例:重寫onConfigurationChanged響應(yīng)系統(tǒng)設(shè)置更改
MainActivity.java
package com.example.changecfg; public class MainActivity extends Activity { Button bn; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bn = (Button) findViewById(R.id.bn); bn.setOnClickListener(new OnClickListener() { // 為按鈕綁定事件監(jiān)聽器 public void onClick(View v) { // 獲取系統(tǒng)的Configuration對象 Configuration config = getResources().getConfiguration(); // 如果當(dāng)前是橫屏 if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) { // 設(shè)為豎屏 MainActivity.this .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } // 如果當(dāng)前是豎屏 if (config.orientation == Configuration.ORIENTATION_PORTRAIT) { // 設(shè)為橫屏 MainActivity.this .setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); } } }); } // 重寫該方法,用于監(jiān)聽系統(tǒng)設(shè)置的更改,主要是監(jiān)控屏幕方向的更改 public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "橫向屏幕" : "豎向屏幕"; Toast.makeText(this, "\n修改后的屏幕方向為" + screen, 1).show(); } }
activity_main.xml
為了讓Activity能監(jiān)聽屏幕方向的更改的時間,需要在配置改Activity時指定acdroid:configChanges屬性,該屬性支持的其中一種屬性值為orientation,指定Activity可以監(jiān)聽屏幕方向改變的事件。
android:targetSdkVersion="12"最高只能設(shè)為12,不然無法監(jiān)聽系統(tǒng)設(shè)置的更改。
AndroidManifest.xml