要實現Android夜間模式,可以按照以下步驟操作:
res/values/
目錄下創建一個themes.xml
文件,并在其中定義兩個主題,一個是默認主題,一個是夜間主題。例如:<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light">
<!-- 默認主題屬性 -->
</style>
<style name="AppTheme.Dark" parent="Theme.AppCompat">
<!-- 夜間主題屬性 -->
</style>
</resources>
AndroidManifest.xml
中設置默認主題:在<application>
標簽中設置默認主題為AppTheme
,例如:<application
...
android:theme="@style/AppTheme">
...
</application>
SettingsActivity
中添加夜間模式切換按鈕:創建一個SettingsActivity
,并在其中添加一個切換夜間模式的開關按鈕。可以使用SwitchPreference
或者CheckBoxPreference
來實現。例如:public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<SwitchPreference
android:key="night_mode"
android:title="@string/night_mode"
android:summary="@string/night_mode_description"/>
</PreferenceScreen>
MainActivity
中根據夜間模式狀態切換主題:在MainActivity
的onCreate()
方法中獲取夜間模式狀態,根據狀態切換主題。例如:@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isNightModeEnabled()) {
setTheme(R.style.AppTheme_Dark);
} else {
setTheme(R.style.AppTheme);
}
setContentView(R.layout.activity_main);
}
private boolean isNightModeEnabled() {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
return preferences.getBoolean("night_mode", false);
}
這樣就可以實現Android夜間模式了。用戶可以在設置界面進行夜間模式的切換,切換后會重新創建MainActivity
,然后根據夜間模式狀態來設置不同的主題。