標籤: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(豎向螢幕)
- screenHeightDp,screenWidthDp:螢幕可用高和寬,用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類)