Android Studio 如何保持黑暗模式启用后,即使杀死应用程序?

hivapdat  于 2023-11-21  发布在  Android
关注(0)|答案(2)|浏览(190)

这是我在settings.java类中的代码。我已经实现了我的设置类,就像这样。我想让黑暗的主题,杀死应用程序后,它必须存在于那里,以及切换必须是真实的。
现在我已经实现了使它变暗。但是当我杀死应用程序,再次出现时,它会消失。切换也会关闭。

public class settings extends AppCompatActivity {
    SwitchCompat switchCompat;
    ImageView backbtn;
    Button button;    
    @SuppressLint("WrongViewCast")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);
        if (AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_YES) {
            setTheme(R.style.Base_ThemeOverlay_AppCompat_Dark);
        } else {
            setTheme(R.style.Base_Theme_MaterialComponents_Light);
        }
            backbtn = findViewById(R.id.goingback);
        LoadingDialod loadingDialod = new LoadingDialod(settings.this);

        backbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(getApplicationContext(), MainActivity.class);
                startActivity(intent);
            }
        });
        switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
                if (isChecked) {
                    loadingDialod.startloadinganimation();

                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {                             AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                            Intent intent = new Intent(getApplicationContext(), settings.class);
                            startActivity(intent);
                        }
                    }, 800);

                } else {
                    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);

                }
            }
        });
    }
}

字符串

qzlgjiam

qzlgjiam1#

我已经在这里给出了答案,但我也在这里给出:
1.创建名为首选项管理器的类
1.将此代码粘贴到类中
👇

public final SharedPreferences sharedPreferences;

public PreferenceManager(Context context){
    sharedPreferences=context.getSharedPreferences( "PREFS",Context.MODE_PRIVATE );
}
public void putBoolean(String key,Boolean value){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean( key,value );
    editor.apply();
}
public Boolean getBoolean (String key,Boolean defaultValue){
    return sharedPreferences.getBoolean( key,defaultValue );
}

public void clear(){
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.clear();
    editor.apply();
}

字符串
1.然后在片段中创建一个名为preferences manager的对象,如下所示。
第一个月
1.然后像这样增加它的价值
如果夜间模式设置为打开。
preferencesManager.putBoolean("NightMode",true);
如果夜间模式关闭
preferencesManager.putBoolean("NightMode",false);
然后稍后检查夜间模式是否打开或关闭,使用此代码

if (preferencesManager.getBoolean("NightMode")){
    //night mode is on ,do some magic
}else {
    //night mode is off ,do some magic
}

编辑

或者,您也可以在此处使用my library来存储数据。

rseugnpd

rseugnpd2#

这个答案提供了Android对黑夜模式的适应,黑暗主题适用于Android 10(API级别29)及更高版本,这是一个前提条件。

适用于API 29 - API 30

如果您要在应用程序中全局启用黑夜模式,则需要满足以下条件:
1.对应的活动应继承自AppCompatActivity。
1.在适当的位置呼叫下列程式码,以启用应用程序中的全域暗模式。

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

字符串

适用于API 31及更高版本

如果您要在应用程序中全局启用黑夜模式,则需要满足以下条件:
1.获取用户模式管理器。

private val uiManager: UiModeManager by lazy {
     getSystemService(UI_MODE_SERVICE) as UiModeManager
}


1.在适当的位置呼叫下列程式码,以启用应用程序中的全域暗模式。

uiManager.setApplicationNightMode(UiModeManager.MODE_NIGHT_YES)

相关问题