Tweak notification scrim easing
A faster fade in that will help with: - Avoid weird state where scrims and notifications overlap - Better connection with launcher scrim (similar easing) - Reduced overdraw, marking shade window as opaque earlier Test: manual Test: atest ScrimControllerTest Fixes: 189118510 Change-Id: I47e357d1d6dd7ee8b8a0b68d37d808c85465375d
This commit is contained in:
@@ -96,13 +96,18 @@ public class Interpolators {
|
||||
/**
|
||||
* Interpolate alpha for notifications background scrim during shade expansion.
|
||||
* @param fraction Shade expansion fraction
|
||||
* @param forNotification If we want the alpha of the notification shade or the scrim.
|
||||
*/
|
||||
public static float getNotificationScrimAlpha(float fraction) {
|
||||
public static float getNotificationScrimAlpha(float fraction, boolean forNotification) {
|
||||
if (!forNotification) {
|
||||
fraction = MathUtils.saturate(1.7f * fraction);
|
||||
}
|
||||
fraction = fraction * 1.2f - 0.2f;
|
||||
if (fraction <= 0) {
|
||||
return 0;
|
||||
} else {
|
||||
return (float) (1f - 0.5f * (1f - Math.cos(3.14159f * Math.pow(1f - fraction, 2f))));
|
||||
final float oneMinusFrac = 1f - fraction;
|
||||
return (float) (1f - 0.5f * (1f - Math.cos(3.14159f * oneMinusFrac * oneMinusFrac)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,8 +31,8 @@ import android.view.WindowInsets;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
|
||||
import com.android.systemui.statusbar.notification.NotificationUtils;
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
|
||||
@@ -180,7 +180,7 @@ public class NotificationShelf extends ActivatableNotificationView implements
|
||||
|
||||
if (ambientState.isExpansionChanging() && !ambientState.isOnKeyguard()) {
|
||||
viewState.alpha = Interpolators.getNotificationScrimAlpha(
|
||||
ambientState.getExpansionFraction());
|
||||
ambientState.getExpansionFraction(), true /* notification */);
|
||||
} else {
|
||||
viewState.alpha = 1f - ambientState.getHideAmount();
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@ import android.util.MathUtils;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.animation.Interpolators;
|
||||
import com.android.systemui.statusbar.NotificationShelf;
|
||||
import com.android.systemui.statusbar.notification.dagger.SilentHeader;
|
||||
import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
|
||||
@@ -382,7 +382,7 @@ public class StackScrollAlgorithm {
|
||||
|
||||
if (ambientState.isExpansionChanging() && !ambientState.isOnKeyguard()) {
|
||||
viewState.alpha = Interpolators.getNotificationScrimAlpha(
|
||||
ambientState.getExpansionFraction());
|
||||
ambientState.getExpansionFraction(), true /* notification */);
|
||||
} else {
|
||||
viewState.alpha = 1f - ambientState.getHideAmount();
|
||||
}
|
||||
|
||||
@@ -883,7 +883,7 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
|
||||
}
|
||||
|
||||
private float getInterpolatedFraction() {
|
||||
return Interpolators.getNotificationScrimAlpha(mPanelExpansion);
|
||||
return Interpolators.getNotificationScrimAlpha(mPanelExpansion, false /* notification */);
|
||||
}
|
||||
|
||||
private void setScrimAlpha(ScrimView scrim, float alpha) {
|
||||
|
||||
@@ -1118,7 +1118,7 @@ public class ScrimControllerTest extends SysuiTestCase {
|
||||
public void testNotificationTransparency_inKeyguardState() {
|
||||
mScrimController.transitionTo(ScrimState.KEYGUARD);
|
||||
|
||||
assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0.2f, /* expansion */ 0.8f);
|
||||
assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0.2f, /* expansion */ 0.4f);
|
||||
assertAlphaAfterExpansion(mNotificationsScrim, /* alpha */ 0.8f, /* expansion */ 0.2f);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user