温馨提示×

android colorprimary怎样实现主题切换

小樊
81
2024-12-01 10:56:13
栏目: 编程语言

在Android中,要实现主题切换,你需要创建一个自定义主题并在应用的AndroidManifest.xml文件中应用它。以下是实现主题切换的步骤:

  1. res/values目录下创建一个名为styles.xml的文件(如果尚未创建)。

  2. 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>
  1. res/values/colors.xml文件中,定义你的主题颜色:
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>
  1. 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>
  1. 要实现主题切换,你可以使用一个按钮来改变应用的当前主题。在你的Activity中添加以下代码:
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();
    }
}
  1. 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>
  1. res/values/colors.xml文件中,定义夜间模式的背景颜色:
<resources>
    <!-- Your other colors go here. -->
    <color name="night_background">#121212</color>
</resources>

现在,当你点击按钮时,应用的主题将在白天和夜间模式之间切换。你可以根据需要自定义这些主题。

0