Merge "Dark text support on Recents" into oc-dr1-dev

This commit is contained in:
Lucas Dupin
2017-07-05 16:09:49 +00:00
committed by Android (Google) Code Review
11 changed files with 73 additions and 37 deletions

View File

@@ -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" />

View File

@@ -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"

View File

@@ -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>

View File

@@ -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);

View File

@@ -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

View File

@@ -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);
}
/**

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>