Configuration類用于描述手機(jī)設(shè)備上的配置信息。
成都創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、成都微信小程序、公眾號商城、等建站開發(fā),成都創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。通過調(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(接受手指的觸摸屏)。
實(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)聽器 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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/ori" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/navigation" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/touch" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/mnc" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="獲取系統(tǒng)設(shè)備狀態(tài)" /> </LinearLayout>
如果系統(tǒng)需要監(jiān)聽系統(tǒng)設(shè)置的更改,則可以考慮重寫Activity的 onConfigurationChanged(Configuration newConfig)方法,該方法是一個基于回調(diào)的事件處理方法:當(dāng)系統(tǒng)設(shè)置發(fā)生改變時,該方法會被自動觸發(fā)。
實(shí)例:重寫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
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="更改屏幕方向" /> </LinearLayout>
為了讓Activity能監(jiān)聽屏幕方向的更改的時間,需要在配置改Activity時指定acdroid:configChanges屬性,該屬性支持的其中一種屬性值為orientation,指定Activity可以監(jiān)聽屏幕方向改變的事件。
android:targetSdkVersion="12"最高只能設(shè)為12,不然無法監(jiān)聽系統(tǒng)設(shè)置的更改。
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.changecfg" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="12" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.changecfg.MainActivity" android:configChanges="orientation" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:Configuration類響應(yīng)的系統(tǒng)設(shè)置的事件-創(chuàng)新互聯(lián)
文章路徑:http://jinyejixie.com/article2/isgoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、網(wǎng)站營銷、小程序開發(fā)、虛擬主機(jī)、做網(wǎng)站、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容