在Android Studio中随着主题更改更改背景图片

时间:2019-05-20 08:49:05

标签: android

我想通过切换按钮来更改应用程序的主题。没问题,当我按下按钮时,主题变为暗或亮。另一方面,我想随着主题在不同活动中的变化而改变背景图像。我的意思是MainActivity具有图像背景,而其他活动具有自己的背景图像。如果有个人可以帮助我,我将不胜感激。

这是我的代码:

private Switch mySwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
if(AppCompatDelegate.getDefaultNightMode() == 
AppCompatDelegate.MODE_NIGHT_YES){
        setTheme(R.style.darkTheme);
}
else {setTheme(R.style.AppTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mySwitch = (Switch) findViewById(R.id.my_switch);
if(AppCompatDelegate.getDefaultNightMode() == 
AppCompatDelegate.MODE_NIGHT_YES){
mySwitch.setChecked(true);
}else {
}

mySwitch.setOnCheckedChangeListener(new 
CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) 
{
if(b){AppCompatDelegate.setDefaultNightMode 
(AppCompatDelegate.MODE_NIGHT_YES);
restartApp();
}
else {

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
restartApp();
}
}
});
}

public void restartApp(){
Intent i = new Intent(getApplicationContext(), MainActivity.class);
startActivity(i);
finish();
}
}

1 个答案:

答案 0 :(得分:0)

将内容保存在sharedPref

private SharedPreferences mSharedPreferences;

public SharedCache(SharedPreferences sharedPreferences) {
    mSharedPreferences = sharedPreferences;
}

public String getThemeName() {
    return mSharedPreferences.getString(THEME_NAME, APP_DARK);
}

public void setThemeName(@NonNull String theme) {
    mSharedPreferences.edit().putString(THEME_NAME, theme).apply();
}

AppDark是我当前的主题名称,您可以在主题更改时设置主题名称。

在Activity onCreate方法中,从sharedPref获取主题。或者,您可以点击以下链接以更好地了解sharedPreference。 https://medium.com/android-grid/android-sharedpreferences-example-writing-and-reading-values-7a677f4448c3