W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
本節(jié)給大家介紹的Configuration類是用來描述手機設(shè)備的配置信息的,比如屏幕方向, 觸摸屏的觸摸方式等,相信定制過ROM的朋友都應(yīng)該知道我們可以在: frameworks/base/core/java/android/content/res/Configuration.java 找到這個類,然后改下相關(guān)設(shè)置,比如調(diào)整默認字體的大?。∮信d趣可自行了解! 本節(jié)講解的Configuration類在我們Android開發(fā)中的使用~ API文檔:Configuration
- densityDpi:屏幕密度
- fontScale:當前用戶設(shè)置的字體的縮放因子
- hardKeyboardHidden:判斷硬鍵盤是否可見,有兩個可選值:HARDKEYBOARDHIDDEN_NO,HARDKEYBOARDHIDDEN_YES,分別是十六進制的0和1
- keyboard:獲取當前關(guān)聯(lián)額鍵盤類型:該屬性的返回值:KEYBOARD_12KEY(只有12個鍵的小鍵盤)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通鍵盤)
- keyboardHidden:該屬性返回一個boolean值用于標識當前鍵盤是否可用。該屬性不僅會判斷系統(tǒng)的硬件鍵盤,也會判斷系統(tǒng)的軟鍵盤(位于屏幕)。
- locale:獲取用戶當前的語言環(huán)境
- mcc:獲取移動信號的國家碼
- mnc:獲取移動信號的網(wǎng)絡(luò)碼
ps:國家代碼和網(wǎng)絡(luò)代碼共同確定當前手機網(wǎng)絡(luò)運營商- navigation:判斷系統(tǒng)上方向?qū)Ш皆O(shè)備的類型。該屬性的返回值:NAVIGATION_NONAV(無導航)、 NAVIGATION_DPAD(DPAD導航)NAVIGATION_TRACKBALL(軌跡球?qū)Ш剑AVIGATION_WHEEL(滾輪導航)
- orientation:獲取系統(tǒng)屏幕的方向。該屬性的返回值:ORIENTATION_LANDSCAPE(橫向屏幕)、ORIENTATION_PORTRAIT(豎向屏幕)
- screenHeightDp,screenWidthDp:屏幕可用高和寬,用dp表示
- touchscreen:獲取系統(tǒng)觸摸屏的觸摸方式。該屬性的返回值:TOUCHSCREEN_NOTOUCH(無觸摸屏)、TOUCHSCREEN_STYLUS(觸摸筆式觸摸屏)、TOUCHSCREEN_FINGER(接收手指的觸摸屏)
運行截圖:
代碼實現(xiàn):
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();
//①獲取系統(tǒng)的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());
}
}
該方法用于監(jiān)聽系統(tǒng)設(shè)置的更改,是基于回調(diào)的時間處理方法,當系統(tǒng)的設(shè)置發(fā)生改變時就會自動觸發(fā); 但是要注意一點,使用下面的方法監(jiān)控的話,targetSdkVersion屬性最高只能設(shè)置為12,高于12的話,該方法不會被激發(fā)!這里寫個橫豎屏切換的例子給大家參考參考,其他的可自行谷歌~
代碼示例:簡單的一個按鈕,點擊后切換橫豎屏,然后Toast提示
運行效果圖:
實現(xiàn)代碼:
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, "系統(tǒng)屏幕方向發(fā)生改變 \n 修改后的方向為" + screen, Toast.LENGTH_SHORT).show();
}
}
另外,還需要在AndroidManifest.xml添加下述內(nèi)容:
權(quán)限: ** 在< activity標簽中添加:android:configChanges="orientation"** 將targetSdkVersion改為12以上的,12也可以
本節(jié)給大家講解了:Configuration類以及onConfigurationChanged響應(yīng)系統(tǒng)設(shè)置更改,有個大概了解即可 后續(xù)用到我們再繼續(xù)深入~
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: