- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
也许我已经在这里有了答案,但是没有找到。
我在android studio中制作一个android应用程序,例如,我有两个活动。
主要活动(启动应用程序时的第一个活动)称为MainActivity。
第二个活动称为MainSettings(该活动是应用程序的主题设置)。
该图显示了活动“ MainSettings”
Image of the second MainSettings activity
在“ MainSettings”活动中,我有一个带有三个RadioButton的RadioGroup。
即使Android处于亮或暗模式,第一个RadioButton(始终亮)显然也应该总是亮的,因此仅在应用程序中它总是会亮的。
第二个RadioButton(始终为黑暗),即使android也处于亮或暗模式,该按钮显然也必须始终为黑暗,仅在应用程序中它始终为黑暗。
第三个RadioButton(跟随系统)显然应该始终选择android系统的颜色,并使整个应用程序具有android定义的颜色。
而且我想保留我在关闭并再次打开应用程序时选择的颜色状态。
该应用程序还将更改第一个“ MainActivity”活动的颜色,并在我关闭并重新打开它时也将其保留在那里。如果我还有其他活动,也应该发生。
我对此非常业余,已经警告过。
我已经准备好在colors.xml中的颜色和在styles.xml中的v的所有内容,并使用“ Theme.AppCompat.DayNight”
因此,即使在JAVA中,我也只希望命令的一部分,仅RadioButton的命令就可以完成我所说的一切。
第二个活动“ MainSettings”的xml代码
<RadioGroup
android:id="@+id/dark_mode_radio"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="24dp”>
<RadioButton
android:id="@+id/always_light_radio_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Always Light" />
<RadioButton
android:id="@+id/always_dark_radio_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Always Dark" />
<RadioButton
android:id="@+id/follow_system_radio_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="Follow System" />
public class MainSettings extends AppCompatActivity {
SharedPreferences pref;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_settings);
pref = getSharedPreferences("MyPref", 0);
editor = pref.edit();
RadioGroup dark_mode_radio = findViewById(R.id.dark_mode_radio);
dark_mode_radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int mode = 0;
switch (checkedId){
case R.id.always_light_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_NO;
break;
case R.id.always_dark_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_YES;
break;
case R.id.follow_system_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
break;
}
saveMode(mode);
changeNightMode(mode);
}
});
}
public void saveMode(int mode){
editor.putInt("mode", mode);
}
public void getMode(){
pref.getInt("key_name", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);//default value is MODE_NIGHT_NO
}
private void changeNightMode(int nightMode) {
AppCompatDelegate.setDefaultNightMode(nightMode);
recreate();
}
最佳答案
将所选模式保存在SharedPreferences
中
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
Editor editor = pref.edit();
public void saveMode(int mode){
editor.putInt("mode", mode);
}
pubic void getMode(){
pref.getInt("key_name", AppCompatDelegate.MODE_NIGHT_NO);//default value is MODE_NIGHT_NO
}
private void changeNightMode(int nightMode) {
AppCompatDelegate.setDefaultNightMode(nightMode);
recreate();
}
nightMode
必须是
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
或
AppCompatDelegate.MODE_NIGHT_NO
或
AppCompatDelegate.MODE_NIGHT_YES
dark_mode_radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
int mode;
switch (checkedId){
case R.id.always_light_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_NO;
break;
case R.id.always_dark_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_YES;
break;
case R.id.follow_system_radio_button:
mode = AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM;
break;
}
saveMode(mode);
changeNightMode(mode);
}
});
public class MainSettings extends AppCompatActivity {
SharedPreferences pref;
Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
pref = getSharedPreferences("MyPref", 0);
editor = pref.edit();
//the rest of your code snippet
}
关于java - 当您关闭并再次打开应用程序时,如何使用RadioButton进行黑暗模式操作以及如何保持主题状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62452488/
我正在.vimrc中用这些配置我的vim colorscheme。 "Color scheme syntax enable set background = dark colorsche
我是一名优秀的程序员,十分优秀!