web-dev-qa-db-ja.com

プログラムでナイトモードを有効にする方法は?

Androidコードを使用してプログラムでナイトモードを有効にする方法を探しています:

public static void setNightMode(Context target , boolean state){

    UiModeManager uiManager = (UiModeManager) target.getSystemService(Context.UI_MODE_SERVICE);

    if (state) {
        //uiManager.enableCarMode(0);
        uiManager.setNightMode(UiModeManager.MODE_NIGHT_YES);
    } else {
       // uiManager.disableCarMode(0);
        uiManager.setNightMode(UiModeManager.MODE_NIGHT_NO);
    }
}

画面上で何も変更されていません。ナイトモードは無効のままです。これによると リンク

CarModeまたはdeskModeを有効にする必要はありません。 Android Studio:

11-26 12:15:16.662 3823-3823/? D/UiModeManager: updateConfigurationLocked: mDockState=0; mCarMode=false; mNightMode=2; uiMode=33
11-26 12:15:26.802 3823-3823/? V/UiModeManager: updateLocked: null action, mDockState=0, category=null
11
Ilan

NightOwl には、Androidで昼間/夜間モードを切り替えるための独自の実装があります。 NightOwlを使い始めるのはとても簡単です。ここにコードスニペットがあります:

ApplicationクラスでNightOwlを初期化し、

NightOwl.builder().defaultMode(0).create();

Activityクラスで3つのメソッドを呼び出し、

public class DemoActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // step1 before super.onCreate
        NightOwl.owlBeforeCreate(this);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_demo);

        // step2 after setContentView
        NightOwl.owlAfterCreate(this);

        // write your code
    }

    @Override
    protected void onResume() {
        super.onResume();

        // step3 onResume
        NightOwl.owlResume(this);
    }

}

好きなようにどこでも皮膚を切り替え、

View v = findViewById(R.id.button);
v.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        NightOwl.owlNewDress(SettingActivity.this);
    }
});
3
Prokash Sarkar

styles.xmlファイルでデフォルトのテーマを_Theme.AppCompat.Light.DarkActionBar_から_Theme.AppCompat.DayNight.DarkActionBar_に変更してから、AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)ナイトモードに切り替えます。 APIv23(Android 6.0)以上でテストしましたが、問題なく動作しています。より良い説明については、 Androidによるこのコードラボ を参照してください

1
Neeraj Sewani