Loading core/java/android/view/SurfaceControl.java +16 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,8 @@ public final class SurfaceControl implements Parcelable { int l, int t, int r, int b); private static native void nativeSetCornerRadius(long transactionObj, long nativeObject, float cornerRadius); private static native void nativeSetBackgroundBlurRadius(long transactionObj, long nativeObject, int blurRadius); private static native void nativeSetLayerStack(long transactionObj, long nativeObject, int layerStack); Loading Loading @@ -2504,6 +2506,20 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Sets the background blur radius of the {@link SurfaceControl}. * * @param sc SurfaceControl. * @param radius Blur radius in pixels. * @return itself. * @hide */ public Transaction setBackgroundBlurRadius(SurfaceControl sc, int radius) { checkPreconditions(sc); nativeSetBackgroundBlurRadius(mNativeObject, sc.mNativeObject, radius); return this; } /** * @hide */ Loading core/jni/android_view_SurfaceControl.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -560,6 +560,14 @@ static void nativeSetCornerRadius(JNIEnv* env, jclass clazz, jlong transactionOb transaction->setCornerRadius(ctrl, cornerRadius); } static void nativeSetBackgroundBlurRadius(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint blurRadius) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); transaction->setBackgroundBlurRadius(ctrl, blurRadius); } static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint layerStack) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); Loading Loading @@ -1369,6 +1377,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetWindowCrop }, {"nativeSetCornerRadius", "(JJF)V", (void*)nativeSetCornerRadius }, {"nativeSetBackgroundBlurRadius", "(JJI)V", (void*)nativeSetBackgroundBlurRadius }, {"nativeSetLayerStack", "(JJI)V", (void*)nativeSetLayerStack }, {"nativeSetShadowRadius", "(JJF)V", Loading packages/SystemUI/res/values/dimens.xml +4 −0 Original line number Diff line number Diff line Loading @@ -1086,6 +1086,10 @@ <dimen name="logout_button_margin_bottom">12dp</dimen> <dimen name="logout_button_corner_radius">2dp</dimen> <!-- Blur radius on status bar window and power menu --> <dimen name="min_window_blur_radius">1px</dimen> <dimen name="max_window_blur_radius">100px</dimen> <!-- How much into a DisplayCutout's bounds we can go, on each side --> <dimen name="display_cutout_margin_consumption">0px</dimen> <!-- How much each bubble is elevated. --> Loading packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +15 −0 Original line number Diff line number Diff line Loading @@ -19,17 +19,22 @@ package com.android.systemui.dagger; import android.annotation.Nullable; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.BootCompleteCache; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.DumpController; import com.android.systemui.assist.AssistModule; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.Recents; import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.BlurUtils; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarWindowBlurController; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; import com.android.systemui.statusbar.notification.people.PeopleHubModule; Loading Loading @@ -82,6 +87,16 @@ public abstract class SystemUIModule { keyguardUpdateMonitor, dumpController); } @Singleton @Provides @Nullable static StatusBarWindowBlurController providesBlurController(BlurUtils blurUtils, @Main Resources resources, SysuiStatusBarStateController statusBarStateController, DumpController dumpController) { return blurUtils.supportsBlursOnWindows() ? new StatusBarWindowBlurController(resources, statusBarStateController, blurUtils, dumpController) : null; } /** */ @Binds public abstract NotificationRowBinder bindNotificationRowBinder( Loading packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +33 −13 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.plugins.GlobalActionsPanelPlugin; import com.android.systemui.statusbar.phone.NotificationShadeWindowController; import com.android.systemui.statusbar.BlurUtils; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -157,6 +158,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final IActivityManager mIActivityManager; private final TelecomManager mTelecomManager; private final MetricsLogger mMetricsLogger; private final BlurUtils mBlurUtils; private ArrayList<Action> mItems; private ActionsDialog mDialog; Loading @@ -177,6 +179,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final ScreenshotHelper mScreenshotHelper; private final ScreenRecordHelper mScreenRecordHelper; private final ActivityStarter mActivityStarter; private final SysuiColorExtractor mSysuiColorExtractor; private final IStatusBarService mStatusBarService; private final NotificationShadeWindowController mNotificationShadeWindowController; private GlobalActionsPanelPlugin mPanelPlugin; /** Loading @@ -192,7 +197,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, ConfigurationController configurationController, ActivityStarter activityStarter, KeyguardStateController keyguardStateController, UserManager userManager, TrustManager trustManager, IActivityManager iActivityManager, TelecomManager telecomManager, MetricsLogger metricsLogger) { TelecomManager telecomManager, MetricsLogger metricsLogger, BlurUtils blurUtils, SysuiColorExtractor colorExtractor, IStatusBarService statusBarService, NotificationShadeWindowController notificationShadeWindowController) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; Loading @@ -208,6 +216,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mIActivityManager = iActivityManager; mTelecomManager = telecomManager; mMetricsLogger = metricsLogger; mBlurUtils = blurUtils; mSysuiColorExtractor = colorExtractor; mStatusBarService = statusBarService; mNotificationShadeWindowController = notificationShadeWindowController; // receive broadcasts IntentFilter filter = new IntentFilter(); Loading Loading @@ -443,8 +455,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mKeyguardManager.isDeviceLocked()) : null; ActionsDialog dialog = new ActionsDialog( mContext, mAdapter, panelViewController, isControlsEnabled(mContext)); ActionsDialog dialog = new ActionsDialog(mContext, mAdapter, panelViewController, mBlurUtils, mSysuiColorExtractor, mStatusBarService, mNotificationShadeWindowController, isControlsEnabled(mContext)); dialog.setCanceledOnTouchOutside(false); // Handled by the custom class. dialog.setKeyguardShowing(mKeyguardShowing); Loading Loading @@ -1529,18 +1542,21 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private ResetOrientationData mResetOrientationData; private boolean mHadTopUi; private final NotificationShadeWindowController mNotificationShadeWindowController; private boolean mControlsEnabled; private final BlurUtils mBlurUtils; private final boolean mControlsEnabled; ActionsDialog(Context context, MyAdapter adapter, GlobalActionsPanelPlugin.PanelViewController plugin, GlobalActionsPanelPlugin.PanelViewController plugin, BlurUtils blurUtils, SysuiColorExtractor sysuiColorExtractor, IStatusBarService statusBarService, NotificationShadeWindowController notificationShadeWindowController, boolean controlsEnabled) { super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions); mContext = context; mAdapter = adapter; mColorExtractor = Dependency.get(SysuiColorExtractor.class); mStatusBarService = Dependency.get(IStatusBarService.class); mNotificationShadeWindowController = Dependency.get(NotificationShadeWindowController.class); mBlurUtils = blurUtils; mColorExtractor = sysuiColorExtractor; mStatusBarService = statusBarService; mNotificationShadeWindowController = notificationShadeWindowController; mControlsEnabled = controlsEnabled; // Window initialization Loading Loading @@ -1735,9 +1751,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, .setDuration(300) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .setUpdateListener(animation -> { int alpha = (int) ((Float) animation.getAnimatedValue() * mScrimAlpha * 255); float animatedValue = animation.getAnimatedFraction(); int alpha = (int) (animatedValue * mScrimAlpha * 255); mBackgroundDrawable.setAlpha(alpha); mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(), mBlurUtils.radiusForRatio(animatedValue)); }) .start(); } Loading @@ -1759,9 +1777,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, .withEndAction(this::completeDismiss) .setInterpolator(new LogAccelerateInterpolator()) .setUpdateListener(animation -> { int alpha = (int) ((1f - (Float) animation.getAnimatedValue()) * mScrimAlpha * 255); float animatedValue = 1f - animation.getAnimatedFraction(); int alpha = (int) (animatedValue * mScrimAlpha * 255); mBackgroundDrawable.setAlpha(alpha); mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(), mBlurUtils.radiusForRatio(animatedValue)); }) .start(); dismissPanel(); Loading Loading
core/java/android/view/SurfaceControl.java +16 −0 Original line number Diff line number Diff line Loading @@ -128,6 +128,8 @@ public final class SurfaceControl implements Parcelable { int l, int t, int r, int b); private static native void nativeSetCornerRadius(long transactionObj, long nativeObject, float cornerRadius); private static native void nativeSetBackgroundBlurRadius(long transactionObj, long nativeObject, int blurRadius); private static native void nativeSetLayerStack(long transactionObj, long nativeObject, int layerStack); Loading Loading @@ -2504,6 +2506,20 @@ public final class SurfaceControl implements Parcelable { return this; } /** * Sets the background blur radius of the {@link SurfaceControl}. * * @param sc SurfaceControl. * @param radius Blur radius in pixels. * @return itself. * @hide */ public Transaction setBackgroundBlurRadius(SurfaceControl sc, int radius) { checkPreconditions(sc); nativeSetBackgroundBlurRadius(mNativeObject, sc.mNativeObject, radius); return this; } /** * @hide */ Loading
core/jni/android_view_SurfaceControl.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -560,6 +560,14 @@ static void nativeSetCornerRadius(JNIEnv* env, jclass clazz, jlong transactionOb transaction->setCornerRadius(ctrl, cornerRadius); } static void nativeSetBackgroundBlurRadius(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint blurRadius) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); transaction->setBackgroundBlurRadius(ctrl, blurRadius); } static void nativeSetLayerStack(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint layerStack) { auto transaction = reinterpret_cast<SurfaceComposerClient::Transaction*>(transactionObj); Loading Loading @@ -1369,6 +1377,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetWindowCrop }, {"nativeSetCornerRadius", "(JJF)V", (void*)nativeSetCornerRadius }, {"nativeSetBackgroundBlurRadius", "(JJI)V", (void*)nativeSetBackgroundBlurRadius }, {"nativeSetLayerStack", "(JJI)V", (void*)nativeSetLayerStack }, {"nativeSetShadowRadius", "(JJF)V", Loading
packages/SystemUI/res/values/dimens.xml +4 −0 Original line number Diff line number Diff line Loading @@ -1086,6 +1086,10 @@ <dimen name="logout_button_margin_bottom">12dp</dimen> <dimen name="logout_button_corner_radius">2dp</dimen> <!-- Blur radius on status bar window and power menu --> <dimen name="min_window_blur_radius">1px</dimen> <dimen name="max_window_blur_radius">100px</dimen> <!-- How much into a DisplayCutout's bounds we can go, on each side --> <dimen name="display_cutout_margin_consumption">0px</dimen> <!-- How much each bubble is elevated. --> Loading
packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java +15 −0 Original line number Diff line number Diff line Loading @@ -19,17 +19,22 @@ package com.android.systemui.dagger; import android.annotation.Nullable; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.BootCompleteCache; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.DumpController; import com.android.systemui.assist.AssistModule; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.model.SysUiState; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.recents.Recents; import com.android.systemui.stackdivider.Divider; import com.android.systemui.statusbar.BlurUtils; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.StatusBarWindowBlurController; import com.android.systemui.statusbar.SysuiStatusBarStateController; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder; import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl; import com.android.systemui.statusbar.notification.people.PeopleHubModule; Loading Loading @@ -82,6 +87,16 @@ public abstract class SystemUIModule { keyguardUpdateMonitor, dumpController); } @Singleton @Provides @Nullable static StatusBarWindowBlurController providesBlurController(BlurUtils blurUtils, @Main Resources resources, SysuiStatusBarStateController statusBarStateController, DumpController dumpController) { return blurUtils.supportsBlursOnWindows() ? new StatusBarWindowBlurController(resources, statusBarStateController, blurUtils, dumpController) : null; } /** */ @Binds public abstract NotificationRowBinder bindNotificationRowBinder( Loading
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +33 −13 Original line number Diff line number Diff line Loading @@ -98,6 +98,7 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.GlobalActions.GlobalActionsManager; import com.android.systemui.plugins.GlobalActionsPanelPlugin; import com.android.systemui.statusbar.phone.NotificationShadeWindowController; import com.android.systemui.statusbar.BlurUtils; import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; Loading Loading @@ -157,6 +158,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final IActivityManager mIActivityManager; private final TelecomManager mTelecomManager; private final MetricsLogger mMetricsLogger; private final BlurUtils mBlurUtils; private ArrayList<Action> mItems; private ActionsDialog mDialog; Loading @@ -177,6 +179,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final ScreenshotHelper mScreenshotHelper; private final ScreenRecordHelper mScreenRecordHelper; private final ActivityStarter mActivityStarter; private final SysuiColorExtractor mSysuiColorExtractor; private final IStatusBarService mStatusBarService; private final NotificationShadeWindowController mNotificationShadeWindowController; private GlobalActionsPanelPlugin mPanelPlugin; /** Loading @@ -192,7 +197,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, ConfigurationController configurationController, ActivityStarter activityStarter, KeyguardStateController keyguardStateController, UserManager userManager, TrustManager trustManager, IActivityManager iActivityManager, TelecomManager telecomManager, MetricsLogger metricsLogger) { TelecomManager telecomManager, MetricsLogger metricsLogger, BlurUtils blurUtils, SysuiColorExtractor colorExtractor, IStatusBarService statusBarService, NotificationShadeWindowController notificationShadeWindowController) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; Loading @@ -208,6 +216,10 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mIActivityManager = iActivityManager; mTelecomManager = telecomManager; mMetricsLogger = metricsLogger; mBlurUtils = blurUtils; mSysuiColorExtractor = colorExtractor; mStatusBarService = statusBarService; mNotificationShadeWindowController = notificationShadeWindowController; // receive broadcasts IntentFilter filter = new IntentFilter(); Loading Loading @@ -443,8 +455,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mKeyguardManager.isDeviceLocked()) : null; ActionsDialog dialog = new ActionsDialog( mContext, mAdapter, panelViewController, isControlsEnabled(mContext)); ActionsDialog dialog = new ActionsDialog(mContext, mAdapter, panelViewController, mBlurUtils, mSysuiColorExtractor, mStatusBarService, mNotificationShadeWindowController, isControlsEnabled(mContext)); dialog.setCanceledOnTouchOutside(false); // Handled by the custom class. dialog.setKeyguardShowing(mKeyguardShowing); Loading Loading @@ -1529,18 +1542,21 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private ResetOrientationData mResetOrientationData; private boolean mHadTopUi; private final NotificationShadeWindowController mNotificationShadeWindowController; private boolean mControlsEnabled; private final BlurUtils mBlurUtils; private final boolean mControlsEnabled; ActionsDialog(Context context, MyAdapter adapter, GlobalActionsPanelPlugin.PanelViewController plugin, GlobalActionsPanelPlugin.PanelViewController plugin, BlurUtils blurUtils, SysuiColorExtractor sysuiColorExtractor, IStatusBarService statusBarService, NotificationShadeWindowController notificationShadeWindowController, boolean controlsEnabled) { super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions); mContext = context; mAdapter = adapter; mColorExtractor = Dependency.get(SysuiColorExtractor.class); mStatusBarService = Dependency.get(IStatusBarService.class); mNotificationShadeWindowController = Dependency.get(NotificationShadeWindowController.class); mBlurUtils = blurUtils; mColorExtractor = sysuiColorExtractor; mStatusBarService = statusBarService; mNotificationShadeWindowController = notificationShadeWindowController; mControlsEnabled = controlsEnabled; // Window initialization Loading Loading @@ -1735,9 +1751,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, .setDuration(300) .setInterpolator(Interpolators.FAST_OUT_SLOW_IN) .setUpdateListener(animation -> { int alpha = (int) ((Float) animation.getAnimatedValue() * mScrimAlpha * 255); float animatedValue = animation.getAnimatedFraction(); int alpha = (int) (animatedValue * mScrimAlpha * 255); mBackgroundDrawable.setAlpha(alpha); mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(), mBlurUtils.radiusForRatio(animatedValue)); }) .start(); } Loading @@ -1759,9 +1777,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, .withEndAction(this::completeDismiss) .setInterpolator(new LogAccelerateInterpolator()) .setUpdateListener(animation -> { int alpha = (int) ((1f - (Float) animation.getAnimatedValue()) * mScrimAlpha * 255); float animatedValue = 1f - animation.getAnimatedFraction(); int alpha = (int) (animatedValue * mScrimAlpha * 255); mBackgroundDrawable.setAlpha(alpha); mBlurUtils.applyBlur(mGlobalActionsLayout.getViewRootImpl(), mBlurUtils.radiusForRatio(animatedValue)); }) .start(); dismissPanel(); Loading