diff options
| author | 2017-06-27 18:17:40 -0700 | |
|---|---|---|
| committer | 2017-06-27 18:25:53 -0700 | |
| commit | 512ce6c9b75ce7d3f4f70280a414ab8fb994e809 (patch) | |
| tree | 1ee1512f9778d16cdee09a19d5c120009020d2a0 | |
| parent | ae885416dddd684fab2369fde234dc9e48db5051 (diff) | |
Support dark text on Recents
Test: visual. Set light and dark wallpapers
Change-Id: I100c7d6dac066168636b1741ed1ed7fc309988ef
Fixes: 63080632
6 files changed, 51 insertions, 18 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 0b875eb05ea6..c67e49ae1150 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 --> 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/SysuiLightWallpaperThemeOverlay/res/values/styles.xml b/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml index b89b9b462384..53912b50df00 100644 --- a/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml +++ b/packages/overlays/SysuiLightWallpaperThemeOverlay/res/values/styles.xml @@ -4,4 +4,9 @@ <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 |