システム設定イベントに応答する (構成クラス)


このセクションの概要:

このセクションで紹介する Configuration クラスは、画面の向きなどの携帯電話デバイスの構成情報を記述するために使用されます。 タッチスクリーンのタッチ方法など。ROMをカスタマイズした友人なら次のことができることを知っているはずです。 フレームワーク/base/core/java/android/content/res/Configuration.java このクラスを見つけて、デフォルトのフォント サイズの調整など、関連する設定を変更します。興味があれば自分で調べてみましょう! Android 開発におけるこのセクションで説明されている Configuration クラスの使用法~ API ドキュメント: Configuration


1. Configuration によって提供されるメソッドのリスト

  • densityDpi: 画面密度
  • fontScale: 現在のユーザーによって設定されたフォントの倍率
  • hardKeyboardHidden: 決定ハード キーボード 表示されるかどうかに関係なく、2 つのオプションの値があります: HARDKEYBOARDHIDDEN_NO、HARDKEYBOARDHIDDEN_YES、それぞれ 16 進数の 0 と 1 です
  • keyboard: 現在関連付けられているキーボード タイプを取得します: この属性の戻り値: KEYBOARD_12KEY (のみ) 12 キー小型キーボード)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY (通常のキーボード)
  • keyboardHidden: この属性は、現在のキーボードが使用可能かどうかを識別するブール値を返します。このプロパティは、システムのハードウェア キーボードを決定するだけでなく、システムのソフト キーボード (画面上に配置) も決定します。
  • locale: ユーザーの現在のロケールを取得します
  • mcc: モバイル信号の国コードを取得します
  • mnc: モバイル信号のネットワークコードを取得します ps: 国コードとネットワークコードは共同して決定します現在の携帯電話ネットワークの運用 ビジネス
  • ナビゲーション: システム上の方向ナビゲーション デバイスのタイプを決定します。この属性の戻り値: NAVIGATION_NONAV (ナビゲーションなし)、 NAVIGATION_DPAD (DPAD ナビゲーション) NAVIGATION_TRACKBALL (トラックボール ナビゲーション)、NAVIGATION_WHEEL (ホイール ナビゲーション)
  • orientation: システム画面の方向を取得します。この属性の戻り値: ORIENTATION_LANDSCAPE (水平画面)、ORIENTATION_PORTRAIT (垂直画面)
  • screenHeightDpscreenWidthDp: dp で表される、画面の利用可能な高さと幅
  • touchscreen: タッチ モードを取得システムのタッチスクリーンの。この属性の戻り値: TOUCHSCREEN_NOTOUCH (タッチ スクリーンなし)、TOUCHSCREEN_STYLUS (スタイラス タッチ スクリーン)、TOUCHSCREEN_FINGER (指を受け取るタッチ スクリーン)

2. テストする簡単な例を作成します:

スクリーンショットの実行:

1.png

コードの実装:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContent View(R.layout.activity_main);
TextView txtResult = (TextView) findViewById(R. id.txtResult);
StringBuffer status = new StringBuffer();
//①获取系の構成对象
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 で調べてください~

コード例: シンプルなボタンをクリックして水平画面と垂直画面を切り替え、次にトーストします。プロンプト

レンダリングの実行:

2.jpg3.jpg

実装コード:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);  
setContentView(R.layout.activity_main);  

ボタン btn = (ボタン) findViewById(R.id.btncahange);  
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
構成 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);
}

; = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE?"水平画面":"垂直画面";
Toast.makeText(MainActivity.this, "システム画面の方向が変更されました n 変更された方向は" + screen, Toast.LENGTH_SHORT) .show(); }
}


さらに、次の内容を AndroidManifest.xml に追加する必要があります:


Permission:
< uses-permission android:name="android.permission.CHANGE_CONFIGURATION" / >
< アクティビティ タグを追加します:
android:configChanges="orientation"

targetSdkVersion を 12 以降に変更します。12 も使用できます

このセクションの概要: このセクションでは、構成クラスとonConfigurationChanged はシステム設定の変更に応答します。一般的な理解だけが必要です 後で使用してさらに深くしていきます〜