Configuration類(lèi)用于描述手機(jī)設(shè)備上的配置信息。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo),提供網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷(xiāo)、成都微信小程序、公眾號(hào)商城、等建站開(kāi)發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專(zhuān)家,為不同類(lèi)型的客戶(hù)提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶(hù)在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。通過(guò)調(diào)用Activity的如下方法來(lái)獲取系統(tǒng)的Configuration對(duì)象。
Configuration cfg = getResources().getConfiguration();
該對(duì)象提供了如下常用屬性來(lái)獲取系統(tǒng)的配置信息。
public float fontScale:獲取當(dāng)前用戶(hù)設(shè)置的字體的縮放因子。
public int keyboard:獲取當(dāng)前設(shè)備所關(guān)聯(lián)的鍵盤(pán)類(lèi)型。該屬性可能返回如下值:
KEYBOARD_NOKEYS、KEYBOARD_QWERTY普通電腦鍵盤(pán)、KEYBOARD_12KEY(只有12個(gè)建的小鍵盤(pán))。
public int keyboardHidden:該屬性返回一個(gè)boolean值用于標(biāo)識(shí)當(dāng)前鍵盤(pán)是否可用。該屬性不僅會(huì)判斷系統(tǒng)地硬件鍵盤(pán),也會(huì)判斷系統(tǒng)的軟鍵盤(pán)(位于屏幕上)。如果該系統(tǒng)的硬件鍵盤(pán)不可用,但軟鍵盤(pán)可用,該屬性也會(huì)返回KEYBOARDHIDDEN_NO,只有當(dāng)兩個(gè)鍵盤(pán)都不可用時(shí)才會(huì)返回KEYBOARDHIDDEN_YES.
public Locale locale:獲取用戶(hù)當(dāng)前的Locale。
public int mcc:獲取移動(dòng)信號(hào)的國(guó)家碼。
public int mnc:獲取移動(dòng)信號(hào)的網(wǎng)絡(luò)碼。
public int navigation:判斷系統(tǒng)上方向?qū)Ш皆O(shè)備的類(lèi)型。該屬性可能返回如NAVIGATION_NONAY(無(wú)導(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(無(wú)觸摸屏)、TOUCHSCREEN_STYLUS(觸摸筆式的觸摸屏)、TOUCHSCREEN_FINGER(接受手指的觸摸屏)。
實(shí)例:獲取系統(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)聽(tīng)器 public void onClick(View v) { // 獲取系統(tǒng)的Configuration對(duì)象 Configuration cfg = getResources().getConfiguration(); String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "橫向屏幕" : "豎向屏幕"; String mncCode = cfg.mnc + ""; String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "沒(méi)有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滾輪方向控制" : cfg.orientation == Configuration.NAVIGATION_DPAD ? "方向鍵控制方向" : "軌跡球控制方向"; String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH ? "無(wú)觸摸屏" : "支持觸摸屏"; ori.setText(screen); mnc.setText(mncCode); navigation.setText(naviName); touch.setText(touchName); } }); } }
activity_main.xml
如果系統(tǒng)需要監(jiān)聽(tīng)系統(tǒng)設(shè)置的更改,則可以考慮重寫(xiě)Activity的 onConfigurationChanged(Configuration newConfig)方法,該方法是一個(gè)基于回調(diào)的事件處理方法:當(dāng)系統(tǒng)設(shè)置發(fā)生改變時(shí),該方法會(huì)被自動(dòng)觸發(fā)。
實(shí)例:重寫(xiě)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)聽(tīng)器 public void onClick(View v) { // 獲取系統(tǒng)的Configuration對(duì)象 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); } } }); } // 重寫(xiě)該方法,用于監(jiān)聽(tīng)系統(tǒng)設(shè)置的更改,主要是監(jiān)控屏幕方向的更改 public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "橫向屏幕" : "豎向屏幕"; Toast.makeText(this, "\n修改后的屏幕方向?yàn)? + screen, 1).show(); } }
activity_main.xml
為了讓Activity能監(jiān)聽(tīng)屏幕方向的更改的時(shí)間,需要在配置改Activity時(shí)指定acdroid:configChanges屬性,該屬性支持的其中一種屬性值為orientation,指定Activity可以監(jiān)聽(tīng)屏幕方向改變的事件。
android:targetSdkVersion="12"最高只能設(shè)為12,不然無(wú)法監(jiān)聽(tīng)系統(tǒng)設(shè)置的更改。
AndroidManifest.xml
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。