Merge "New scrim values for shade and dialogs" into rvc-dev

This commit is contained in:
Lucas Dupin
2020-03-14 21:47:48 +00:00
committed by Android (Google) Code Review
6 changed files with 47 additions and 24 deletions

View File

@@ -99,6 +99,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.GlobalActions.GlobalActionsManager;
import com.android.systemui.plugins.GlobalActionsPanelPlugin;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
import com.android.systemui.statusbar.phone.ScrimController;
@@ -163,6 +164,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private final TelecomManager mTelecomManager;
private final MetricsLogger mMetricsLogger;
private final NotificationShadeDepthController mDepthController;
private final BlurUtils mBlurUtils;
private ArrayList<Action> mItems;
private ActionsDialog mDialog;
@@ -208,7 +210,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
TrustManager trustManager, IActivityManager iActivityManager,
@Nullable TelecomManager telecomManager, MetricsLogger metricsLogger,
NotificationShadeDepthController depthController, SysuiColorExtractor colorExtractor,
IStatusBarService statusBarService,
IStatusBarService statusBarService, BlurUtils blurUtils,
NotificationShadeWindowController notificationShadeWindowController,
ControlsUiController controlsUiController, IWindowManager iWindowManager,
@Background Executor backgroundExecutor,
@@ -237,6 +239,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mIWindowManager = iWindowManager;
mBackgroundExecutor = backgroundExecutor;
mControlsListingController = controlsListingController;
mBlurUtils = blurUtils;
// receive broadcasts
IntentFilter filter = new IntentFilter();
@@ -439,7 +442,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
ActionsDialog dialog = new ActionsDialog(mContext, mAdapter, panelViewController,
mDepthController, mSysuiColorExtractor, mStatusBarService,
mNotificationShadeWindowController,
shouldShowControls() ? mControlsUiController : null);
shouldShowControls() ? mControlsUiController : null, mBlurUtils);
dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
dialog.setKeyguardShowing(mKeyguardShowing);
@@ -1571,6 +1574,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
private boolean mHadTopUi;
private final NotificationShadeWindowController mNotificationShadeWindowController;
private final NotificationShadeDepthController mDepthController;
private final BlurUtils mBlurUtils;
private ControlsUiController mControlsUiController;
private ViewGroup mControlsView;
@@ -1580,7 +1584,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
NotificationShadeDepthController depthController,
SysuiColorExtractor sysuiColorExtractor, IStatusBarService statusBarService,
NotificationShadeWindowController notificationShadeWindowController,
ControlsUiController controlsUiController) {
ControlsUiController controlsUiController, BlurUtils blurUtils) {
super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions);
mContext = context;
mAdapter = adapter;
@@ -1589,6 +1593,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
mStatusBarService = statusBarService;
mNotificationShadeWindowController = notificationShadeWindowController;
mControlsUiController = controlsUiController;
mBlurUtils = blurUtils;
// Window initialization
Window window = getWindow();
@@ -1697,7 +1702,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener,
}
if (mBackgroundDrawable == null) {
mBackgroundDrawable = new ScrimDrawable();
mScrimAlpha = ScrimController.BUSY_SCRIM_ALPHA;
mScrimAlpha = mBlurUtils.supportsBlursOnWindows()
? ScrimController.BLUR_SCRIM_ALPHA : ScrimController.BUSY_SCRIM_ALPHA;
}
getWindow().setBackgroundDrawable(mBackgroundDrawable);
}

View File

@@ -149,7 +149,7 @@ public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks
}
if (mBlurUtils.supportsBlursOnWindows()) {
background.setAlpha((int) (ScrimController.BUSY_SCRIM_ALPHA * 255));
background.setAlpha((int) (ScrimController.BLUR_SCRIM_ALPHA * 255));
mBlurUtils.applyBlur(d.getWindow().getDecorView().getViewRootImpl(),
mBlurUtils.blurRadiusOfRatio(1));
} else {

View File

@@ -40,8 +40,10 @@ open class BlurUtils @Inject constructor(
) : Dumpable {
private val minBlurRadius = resources.getDimensionPixelSize(R.dimen.min_window_blur_radius)
private val maxBlurRadius = resources.getDimensionPixelSize(R.dimen.max_window_blur_radius)
private val blurSysProp = SystemProperties
private val blurSupportedSysProp = SystemProperties
.getBoolean("ro.surface_flinger.supports_background_blur", false)
private val blurDisabledSysProp = SystemProperties
.getBoolean("persist.sys.sf.disable_blurs", false)
init {
dumpManager.registerDumpable(javaClass.name, this)
@@ -97,7 +99,7 @@ open class BlurUtils @Inject constructor(
* @return {@code true} when supported.
*/
open fun supportsBlursOnWindows(): Boolean {
return blurSysProp && ActivityManager.isHighEndGfx()
return blurSupportedSysProp && !blurDisabledSysProp && ActivityManager.isHighEndGfx()
}
override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
@@ -106,7 +108,8 @@ open class BlurUtils @Inject constructor(
it.increaseIndent()
it.println("minBlurRadius: $minBlurRadius")
it.println("maxBlurRadius: $maxBlurRadius")
it.println("blurSysProp: $blurSysProp")
it.println("blurSupportedSysProp: $blurSupportedSysProp")
it.println("blurDisabledSysProp: $blurDisabledSysProp")
it.println("supportsBlursOnWindows: ${supportsBlursOnWindows()}")
}
}

View File

@@ -47,6 +47,7 @@ import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -107,21 +108,21 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
/**
* Default alpha value for most scrims.
*/
public static final float SCRIM_ALPHA = 0.2f;
protected static final float KEYGUARD_SCRIM_ALPHA = 0.2f;
/**
* Scrim opacity when the phone is about to wake-up.
*/
public static final float WAKE_SENSOR_SCRIM_ALPHA = 0.6f;
/**
* A scrim varies its opacity based on a busyness factor, for example
* how many notifications are currently visible.
* The default scrim under the shade and dialogs.
* This should not be lower than 0.54, otherwise we won't pass GAR.
*/
public static final float BUSY_SCRIM_ALPHA = 0.75f;
/**
* The most common scrim, the one under the keyguard.
* Same as above, but when blur is supported.
*/
protected static final float SCRIM_BEHIND_ALPHA_KEYGUARD = SCRIM_ALPHA;
public static final float BLUR_SCRIM_ALPHA = 0.54f;
static final int TAG_KEY_ANIM = R.id.scrim;
private static final int TAG_START_ALPHA = R.id.scrim_alpha_start;
@@ -146,7 +147,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
private GradientColors mColors;
private boolean mNeedsDrawableColorUpdate;
private float mScrimBehindAlphaKeyguard = SCRIM_BEHIND_ALPHA_KEYGUARD;
private float mScrimBehindAlphaKeyguard = KEYGUARD_SCRIM_ALPHA;
private final float mDefaultScrimAlpha;
// Assuming the shade is expanded during initialization
private float mExpansionFraction = 1f;
@@ -192,9 +194,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
AlarmManager alarmManager, KeyguardStateController keyguardStateController,
DelayedWakeLock.Builder delayedWakeLockBuilder, Handler handler,
KeyguardUpdateMonitor keyguardUpdateMonitor, SysuiColorExtractor sysuiColorExtractor,
DockManager dockManager) {
DockManager dockManager, BlurUtils blurUtils) {
mScrimStateListener = lightBarController::setScrimState;
mDefaultScrimAlpha = blurUtils.supportsBlursOnWindows()
? BLUR_SCRIM_ALPHA : BUSY_SCRIM_ALPHA;
mKeyguardStateController = keyguardStateController;
mDarkenWhileDragging = !mKeyguardStateController.canDismissLockScreen();
@@ -236,6 +240,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
states[i].init(mScrimInFront, mScrimBehind, mScrimForBubble, mDozeParameters,
mDockManager);
states[i].setScrimBehindAlphaKeyguard(mScrimBehindAlphaKeyguard);
states[i].setDefaultScrimAlpha(mDefaultScrimAlpha);
}
mScrimBehind.setDefaultFocusHighlightEnabled(false);
@@ -483,7 +488,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
// Darken scrim as you pull down the shade when unlocked
float behindFraction = getInterpolatedFraction();
behindFraction = (float) Math.pow(behindFraction, 0.8f);
mBehindAlpha = behindFraction * BUSY_SCRIM_ALPHA;
mBehindAlpha = behindFraction * mDefaultScrimAlpha;
mInFrontAlpha = 0;
} else if (mState == ScrimState.KEYGUARD || mState == ScrimState.PULSING) {
// Either darken of make the scrim transparent when you
@@ -491,7 +496,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
float interpolatedFract = getInterpolatedFraction();
float alphaBehind = mState.getBehindAlpha();
if (mDarkenWhileDragging) {
mBehindAlpha = MathUtils.lerp(BUSY_SCRIM_ALPHA, alphaBehind,
mBehindAlpha = MathUtils.lerp(mDefaultScrimAlpha, alphaBehind,
interpolatedFract);
mInFrontAlpha = mState.getFrontAlpha();
} else {
@@ -967,7 +972,8 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, OnCo
pw.print(" mTracking=");
pw.println(mTracking);
pw.print(" mDefaultScrimAlpha=");
pw.println(mDefaultScrimAlpha);
pw.print(" mExpansionFraction=");
pw.println(mExpansionFraction);
}

View File

@@ -92,7 +92,7 @@ public enum ScrimState {
BOUNCER {
@Override
public void prepare(ScrimState previousState) {
mBehindAlpha = ScrimController.BUSY_SCRIM_ALPHA;
mBehindAlpha = mDefaultScrimAlpha;
mFrontAlpha = 0f;
mBubbleAlpha = 0f;
}
@@ -106,7 +106,7 @@ public enum ScrimState {
public void prepare(ScrimState previousState) {
mBehindAlpha = 0;
mBubbleAlpha = 0f;
mFrontAlpha = ScrimController.BUSY_SCRIM_ALPHA;
mFrontAlpha = mDefaultScrimAlpha;
}
},
@@ -233,9 +233,9 @@ public enum ScrimState {
mBehindTint = Color.TRANSPARENT;
mBubbleTint = Color.TRANSPARENT;
mFrontAlpha = ScrimController.TRANSPARENT;
mBehindAlpha = ScrimController.BUSY_SCRIM_ALPHA;
mBubbleAlpha = ScrimController.BUSY_SCRIM_ALPHA;
mFrontAlpha = 0f;
mBehindAlpha = mDefaultScrimAlpha;
mBubbleAlpha = mDefaultScrimAlpha;
mAnimationDuration = ScrimController.ANIMATION_DURATION;
mBlankScreen = false;
@@ -255,6 +255,7 @@ public enum ScrimState {
float mBubbleAlpha;
float mScrimBehindAlphaKeyguard;
float mDefaultScrimAlpha;
ScrimView mScrimInFront;
ScrimView mScrimBehind;
ScrimView mScrimForBubble;
@@ -341,6 +342,10 @@ public enum ScrimState {
mScrimBehindAlphaKeyguard = scrimBehindAlphaKeyguard;
}
public void setDefaultScrimAlpha(float defaultScrimAlpha) {
mDefaultScrimAlpha = defaultScrimAlpha;
}
public void setWallpaperSupportsAmbientMode(boolean wallpaperSupportsAmbientMode) {
mWallpaperSupportsAmbientMode = wallpaperSupportsAmbientMode;
}

View File

@@ -50,6 +50,7 @@ import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.wakelock.DelayedWakeLock;
@@ -101,6 +102,8 @@ public class ScrimControllerTest extends SysuiTestCase {
private SysuiColorExtractor mSysuiColorExtractor;
@Mock
private DockManager mDockManager;
@Mock
private BlurUtils mBlurUtils;
private static class AnimatorListener implements Animator.AnimatorListener {
@@ -215,7 +218,7 @@ public class ScrimControllerTest extends SysuiTestCase {
mScrimController = new ScrimController(mLightBarController,
mDozeParamenters, mAlarmManager, mKeyguardStateController, mDelayedWakeLockBuilder,
new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor, mSysuiColorExtractor,
mDockManager);
mDockManager, mBlurUtils);
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
mScrimController.attachViews(mScrimBehind, mScrimInFront, mScrimForBubble);
mScrimController.setAnimatorListener(mAnimatorListener);