Add support for user-selectable dark/light theme
Updates Settings to use the DayNight theme (real name TBD) and fixes several colors that were pinned to non-theme values. Adds a setting for switching theme between light/dark/auto. Bug: 19368658 Bug: 19369392 Change-Id: I7cd23b7ad38bdb25a01b92e67ff1ee1cdd8a3958
This commit is contained in:
@@ -32,6 +32,7 @@ import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
|
||||
import android.app.Activity;
|
||||
import android.app.ActivityManagerNative;
|
||||
import android.app.Dialog;
|
||||
import android.app.UiModeManager;
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ContentResolver;
|
||||
import android.content.Context;
|
||||
@@ -70,6 +71,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
||||
private static final String KEY_DOZE = "doze";
|
||||
private static final String KEY_AUTO_BRIGHTNESS = "auto_brightness";
|
||||
private static final String KEY_AUTO_ROTATE = "auto_rotate";
|
||||
private static final String KEY_NIGHT_MODE = "night_mode";
|
||||
|
||||
private static final int DLG_GLOBAL_CHANGE_WARNING = 1;
|
||||
|
||||
@@ -78,6 +80,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
||||
private final Configuration mCurConfig = new Configuration();
|
||||
|
||||
private ListPreference mScreenTimeoutPreference;
|
||||
private ListPreference mNightModePreference;
|
||||
private Preference mScreenSaverPreference;
|
||||
private SwitchPreference mLiftToWakePreference;
|
||||
private SwitchPreference mDozePreference;
|
||||
@@ -165,6 +168,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
||||
} else {
|
||||
removePreference(KEY_AUTO_ROTATE);
|
||||
}
|
||||
|
||||
mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE);
|
||||
final UiModeManager uiManager = (UiModeManager) getSystemService(
|
||||
Context.UI_MODE_SERVICE);
|
||||
final int currentNightMode = uiManager.getNightMode();
|
||||
mNightModePreference.setValue(String.valueOf(currentNightMode));
|
||||
mNightModePreference.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
private static boolean allowAllRotations(Context context) {
|
||||
@@ -381,6 +391,16 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
|
||||
boolean value = (Boolean) objValue;
|
||||
Settings.Secure.putInt(getContentResolver(), DOZE_ENABLED, value ? 1 : 0);
|
||||
}
|
||||
if (preference == mNightModePreference) {
|
||||
try {
|
||||
final int value = Integer.parseInt((String) objValue);
|
||||
final UiModeManager uiManager = (UiModeManager) getSystemService(
|
||||
Context.UI_MODE_SERVICE);
|
||||
uiManager.setNightMode(value);
|
||||
} catch (NumberFormatException e) {
|
||||
Log.e(TAG, "could not persist night mode setting", e);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user