diff options
| author | 2017-06-27 18:17:40 -0700 | |
|---|---|---|
| committer | 2017-07-05 00:36:50 -0700 | |
| commit | 3ceaa0abbb0ed0128dbe86903e953f5291b3291c (patch) | |
| tree | aaf5fdaae6ec323967e5e2d53f5fcbdcd49f1afe | |
| parent | 1d8d34fa3eff2c6f9ed23909e1688af6cc4560d0 (diff) | |
Dark text support on Recents
Also changed target package.
Test: visual. Set light and dark wallpapers
Change-Id: I188bc21b5372e541509bdd739c825fc5ac53ca47
Fixes: 62346335
| -rw-r--r-- | packages/SystemUI/res/layout/recents_empty.xml | 3 | ||||
| -rw-r--r-- | packages/SystemUI/res/layout/recents_stack_action_button.xml | 2 | ||||
| -rw-r--r-- | packages/SystemUI/res/values/styles.xml | 24 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java | 4 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java | 26 | ||||
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java | 21 | ||||
| -rw-r--r-- | packages/overlays/SysuiDarkThemeOverlay/AndroidManifest.xml | 2 | ||||
| -rw-r--r-- | packages/overlays/SysuiDarkThemeOverlay/res/values/styles.xml (renamed from packages/overlays/SysuiDarkThemeOverlay/res/values/themes_device_defaults.xml) | 7 | ||||
| -rw-r--r-- | packages/overlays/SysuiLightWallpaperThemeOverlay/AndroidManifest.xml | 2 | ||||
| -rw-r--r-- | packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml | 12 | ||||
| -rw-r--r-- | packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/themes_device_defaults.xml | 7 |
11 files changed, 73 insertions, 37 deletions
diff --git a/packages/SystemUI/res/layout/recents_empty.xml b/packages/SystemUI/res/layout/recents_empty.xml index 53d9cc53161d..8048c6845c23 100644 --- a/packages/SystemUI/res/layout/recents_empty.xml +++ b/packages/SystemUI/res/layout/recents_empty.xml @@ -23,7 +23,8 @@ android:drawableTop="@drawable/recents_empty" android:drawablePadding="25dp" android:textSize="16sp" - android:textColor="#ffffffff" + android:drawableTint="?attr/bgProtectTextColor" + android:textColor="?attr/bgProtectTextColor" android:text="@string/recents_empty_message" android:fontFamily="sans-serif" android:visibility="gone" />
\ No newline at end of file diff --git a/packages/SystemUI/res/layout/recents_stack_action_button.xml b/packages/SystemUI/res/layout/recents_stack_action_button.xml index 34b4e1771af5..10b43163cd62 100644 --- a/packages/SystemUI/res/layout/recents_stack_action_button.xml +++ b/packages/SystemUI/res/layout/recents_stack_action_button.xml @@ -24,7 +24,7 @@ android:paddingBottom="12dp" android:text="@string/recents_stack_action_button_label" android:textSize="14sp" - android:textColor="#FFFFFF" + android:textColor="?attr/bgProtectTextColor" android:textAllCaps="true" android:shadowColor="#99000000" android:shadowDx="0" diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index 5274b6476aba..93a0742dd2d7 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -16,7 +16,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="RecentsTheme" parent="@android:style/Theme.Material"> + <style name="RecentsTheme" parent="RecentsBase"> <!-- NoTitle --> <item name="android:windowNoTitle">true</item> <!-- Misc --> @@ -27,6 +27,12 @@ <item name="android:ambientShadowAlpha">0.35</item> </style> + <!-- OverlayManager might replace this style entirely, use RecentsTheme to set a property + that should exist in both light and dark versions of Recents --> + <style name="RecentsBase" parent="@android:style/Theme.Material"> + <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_dark</item> + <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_dark</item> + </style> <!-- Recents theme --> <style name="RecentsTheme.Wallpaper"> @@ -35,6 +41,8 @@ <item name="android:windowShowWallpaper">true</item> <item name="android:windowDisablePreview">true</item> <item name="clearAllStyle">@style/ClearAllButtonDefaultMargins</item> + <item name="bgProtectTextColor">?android:attr/textColorPrimaryInverse</item> + <item name="bgProtectSecondaryTextColor">?android:attr/textColorSecondaryInverse</item> </style> <style name="ClearAllButtonDefaultMargins"> @@ -47,6 +55,8 @@ <!-- Performance optimized Recents theme (no wallpaper) --> <style name="RecentsTheme.NoWallpaper"> <item name="android:windowBackground">@android:color/black</item> + <item name="bgProtectTextColor">@android:color/white</item> + <item name="bgProtectSecondaryTextColor">@android:color/white</item> </style> <!-- Theme used for the activity that shows when the system forced an app to be resizable --> @@ -290,7 +300,10 @@ <style name="Animation.StatusBar"> </style> - <style name="systemui_theme" parent="@*android:style/Theme.DeviceDefault.QuickSettings"> + <!-- Overlay manager may replace this theme --> + <style name="systemui_base" parent="@*android:style/Theme.DeviceDefault.QuickSettings" /> + + <style name="systemui_theme" parent="systemui_base"> <item name="lightIconTheme">@style/DualToneLightTheme</item> <item name="darkIconTheme">@style/DualToneDarkTheme</item> <item name="bgProtectTextColor">?android:attr/textColorPrimaryInverse</item> @@ -303,7 +316,10 @@ <item name="*android:successColor">?android:attr/textColorPrimaryInverse</item> </style> - <style name="qs_theme" parent="systemui_theme"> + <!-- Overlay manager may replace this theme --> + <style name="qs_base" parent="@*android:style/Theme.DeviceDefault.QuickSettings" /> + + <style name="qs_theme" parent="qs_base"> <item name="lightIconTheme">@style/QSIconTheme</item> <item name="darkIconTheme">@style/QSIconTheme</item> </style> @@ -459,7 +475,7 @@ <item name="android:paddingEnd">8dp</item> </style> - <style name="edit_theme" parent="@*android:style/Theme.DeviceDefault.QuickSettings"> + <style name="edit_theme" parent="qs_base"> <item name="android:colorBackground">?android:attr/colorSecondary</item> </style> diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java index 17a0d3302ee6..77c3bfab8de9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java @@ -16,7 +16,9 @@ package com.android.systemui.qs.tileimpl; import android.content.Context; import android.util.Log; +import android.view.ContextThemeWrapper; +import com.android.systemui.R; import com.android.systemui.plugins.qs.*; import com.android.systemui.plugins.qs.QSTileView; import com.android.systemui.qs.external.CustomTile; @@ -78,7 +80,7 @@ public class QSFactoryImpl implements QSFactory { @Override public QSTileView createTileView(QSTile tile, boolean collapsedView) { - Context context = mHost.getContext(); + Context context = new ContextThemeWrapper(mHost.getContext(), R.style.qs_theme); QSIconView icon = tile.createTileView(context); if (collapsedView) { return new QSTileBaseView(context, icon, collapsedView); diff --git a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java index 4de121488ecc..fa16f8e5bd0e 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java +++ b/packages/SystemUI/src/com/android/systemui/recents/RecentsActivity.java @@ -24,6 +24,7 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; @@ -42,9 +43,9 @@ import android.view.WindowManager.LayoutParams; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; +import com.android.keyguard.LatencyTracker; import com.android.systemui.DejankUtils; import com.android.systemui.Interpolators; -import com.android.keyguard.LatencyTracker; import com.android.systemui.R; import com.android.systemui.recents.events.EventBus; import com.android.systemui.recents.events.activity.CancelEnterRecentsWindowAnimationEvent; @@ -110,11 +111,10 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD private RecentsPackageMonitor mPackageMonitor; private Handler mHandler = new Handler(); private long mLastTabKeyEventTime; - private int mLastDeviceOrientation = Configuration.ORIENTATION_UNDEFINED; - private int mLastDisplayDensity; private boolean mFinishedOnStartup; private boolean mIgnoreAltTabRelease; private boolean mIsVisible; + private Configuration mLastConfig; // Top level views private RecentsView mRecentsView; @@ -333,16 +333,11 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD setContentView(R.layout.recents); takeKeyEvents(true); mRecentsView = findViewById(R.id.recents_view); - mRecentsView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | - View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | - View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION); mScrimViews = new SystemBarScrimViews(this); getWindow().getAttributes().privateFlags |= WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY; - Configuration appConfiguration = Utilities.getAppConfiguration(this); - mLastDeviceOrientation = appConfiguration.orientation; - mLastDisplayDensity = appConfiguration.densityDpi; + mLastConfig = Utilities.getAppConfiguration(this); mFocusTimerDuration = getResources().getInteger(R.integer.recents_auto_advance_duration); mIterateTrigger = new DozeTrigger(mFocusTimerDuration, new Runnable() { @Override @@ -485,10 +480,15 @@ public class RecentsActivity extends Activity implements ViewTreeObserver.OnPreD Configuration newDeviceConfiguration = Utilities.getAppConfiguration(this); int numStackTasks = mRecentsView.getStack().getStackTaskCount(); EventBus.getDefault().send(new ConfigurationChangedEvent(false /* fromMultiWindow */, - mLastDeviceOrientation != newDeviceConfiguration.orientation, - mLastDisplayDensity != newDeviceConfiguration.densityDpi, numStackTasks > 0)); - mLastDeviceOrientation = newDeviceConfiguration.orientation; - mLastDisplayDensity = newDeviceConfiguration.densityDpi; + mLastConfig.orientation != newDeviceConfiguration.orientation, + mLastConfig.densityDpi != newDeviceConfiguration.densityDpi, numStackTasks > 0)); + + int configDiff = mLastConfig.updateFrom(newDeviceConfiguration); + + // Recreate activity if an overlay was enabled/disabled + if ((configDiff & ActivityInfo.CONFIG_ASSETS_PATHS) != 0) { + recreate(); + } } @Override diff --git a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java index 9ca756c5431f..c1c41be07fc9 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java +++ b/packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java @@ -151,6 +151,12 @@ public class RecentsView extends FrameLayout implements ColorExtractor.OnColorsC mColorExtractor = Dependency.get(SysuiColorExtractor.class); LayoutInflater inflater = LayoutInflater.from(context); + + mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false); + addView(mEmptyView); + + boolean usingDarkText = + Color.luminance(mEmptyView.getTextColors().getDefaultColor()) < 0.5f; if (RecentsDebugFlags.Static.EnableStackActionButton) { mStackActionButton = (TextView) inflater.inflate(R.layout.recents_stack_action_button, this, false); @@ -160,10 +166,21 @@ public class RecentsView extends FrameLayout implements ColorExtractor.OnColorsC EventBus.getDefault().send(new DismissAllTaskViewsEvent()); } }); + // Disable black shadow if text color is already dark. + if (usingDarkText) { + mStackActionButton.setShadowLayer(0, 0, 0, 0); + } addView(mStackActionButton); } - mEmptyView = (TextView) inflater.inflate(R.layout.recents_empty, this, false); - addView(mEmptyView); + + // Let's also require dark status and nav bars if the text is dark + int systemBarsStyle = usingDarkText ? View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR | + View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR : 0; + + setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | + View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | + View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | + systemBarsStyle); } /** diff --git a/packages/overlays/SysuiDarkThemeOverlay/AndroidManifest.xml b/packages/overlays/SysuiDarkThemeOverlay/AndroidManifest.xml index ba1c91cbdebe..8b6ee2bb851c 100644 --- a/packages/overlays/SysuiDarkThemeOverlay/AndroidManifest.xml +++ b/packages/overlays/SysuiDarkThemeOverlay/AndroidManifest.xml @@ -2,7 +2,7 @@ package="com.android.systemui.theme.dark" android:versionCode="1" android:versionName="1.0"> - <overlay android:targetPackage="android" android:priority="1"/> + <overlay android:targetPackage="com.android.systemui" android:priority="1"/> <application android:label="@string/sysui_overlay_dark" android:hasCode="false"/> </manifest> diff --git a/packages/overlays/SysuiDarkThemeOverlay/res/values/themes_device_defaults.xml b/packages/overlays/SysuiDarkThemeOverlay/res/values/styles.xml index 7e2b955a8871..0c1b0ef31434 100644 --- a/packages/overlays/SysuiDarkThemeOverlay/res/values/themes_device_defaults.xml +++ b/packages/overlays/SysuiDarkThemeOverlay/res/values/styles.xml @@ -1,13 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <resources> - <style name="Theme.DeviceDefault.QuickSettings" parent="android:Theme.DeviceDefault"> + <style name="qs_base" parent="android:Theme.DeviceDefault"> <item name="android:colorPrimary">@*android:color/primary_device_default_settings</item> <item name="android:colorPrimaryDark">@*android:color/primary_dark_device_default_settings</item> - <!-- textColorPrimaryInverse is used on the lock screen and this means that we can't just - invert text colors otherwise we won't have contrast on the keyguard --> - <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_dark</item> - <!-- same for textColorSecondaryInverse --> - <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_dark</item> <item name="android:colorSecondary">@*android:color/secondary_device_default_settings</item> <item name="android:colorAccent">@*android:color/accent_device_default_dark</item> <item name="android:colorControlNormal">?android:attr/textColorPrimary</item> diff --git a/packages/overlays/SysuiLightWallpaperThemeOverlay/AndroidManifest.xml b/packages/overlays/SysuiLightWallpaperThemeOverlay/AndroidManifest.xml index 1745b4cda03d..0a8749c64ea2 100644 --- a/packages/overlays/SysuiLightWallpaperThemeOverlay/AndroidManifest.xml +++ b/packages/overlays/SysuiLightWallpaperThemeOverlay/AndroidManifest.xml @@ -2,7 +2,7 @@ package="com.android.systemui.theme.lightwallpaper" android:versionCode="1" android:versionName="1.0"> - <overlay android:targetPackage="android" android:priority="2"/> + <overlay android:targetPackage="com.android.systemui" android:priority="2"/> <application android:label="@string/sysui_overlay_light" android:hasCode="false"/> </manifest> diff --git a/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml b/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml new file mode 100644 index 000000000000..53912b50df00 --- /dev/null +++ b/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <style name="systemui_base" parent="@*android:style/Theme.DeviceDefault.QuickSettings"> + <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_light</item> + <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_light</item> + </style> + + <style name="RecentsBase" parent="@android:style/Theme.Material"> + <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_light</item> + <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_light</item> + </style> +</resources>
\ No newline at end of file diff --git a/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/themes_device_defaults.xml b/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/themes_device_defaults.xml deleted file mode 100644 index 877ebf8c4e9d..000000000000 --- a/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/themes_device_defaults.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<resources> - <style name="Theme.DeviceDefault.QuickSettings" parent="android:Theme.DeviceDefault.Light"> - <item name="android:textColorPrimaryInverse">@*android:color/primary_text_material_light</item> - <item name="android:textColorSecondaryInverse">@*android:color/secondary_text_material_light</item> - </style> -</resources>
\ No newline at end of file |