在Android中,要实现主题切换,你需要创建一个自定义主题并在应用的AndroidManifest.xml
文件中应用它。以下是实现主题切换的步骤:
在res/values
目录下创建一个名为styles.xml
的文件(如果尚未创建)。
在styles.xml
文件中,定义你的自定义主题。例如,创建一个名为MyTheme
的主题,继承自Theme.AppCompat.Light.DarkActionBar
:
<resources>
<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
res/values/colors.xml
文件中,定义你的主题颜色:<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
AndroidManifest.xml
文件中,为你的Activity应用自定义主题:<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/MyTheme">
<!-- Your activities go here. -->
</application>
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button switchThemeButton = findViewById(R.id.switch_theme_button);
switchThemeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toggleTheme();
}
});
}
private void toggleTheme() {
int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
if (currentNightMode == Configuration.UI_MODE_NIGHT_YES) {
setTheme(R.style.MyTheme_Day);
} else {
setTheme(R.style.MyTheme_Night);
}
recreate();
}
}
res/values
目录下创建一个名为styles.xml
的新文件(如果尚未创建)。在此文件中,定义两个新主题,一个用于白天模式,另一个用于夜间模式。例如:<resources>
<style name="MyTheme_Day" parent="MyTheme">
<!-- Customize your theme for day mode here. -->
</style>
<style name="MyTheme_Night" parent="MyTheme">
<!-- Customize your theme for night mode here. -->
<item name="android:windowBackground">@color/night_background</item>
</style>
</resources>
res/values/colors.xml
文件中,定义夜间模式的背景颜色:<resources>
<!-- Your other colors go here. -->
<color name="night_background">#121212</color>
</resources>
现在,当你点击按钮时,应用的主题将在白天和夜间模式之间切换。你可以根据需要自定义这些主题。