Merge "Make shade transparent under a flag"

This commit is contained in:
Lucas Dupin
2021-01-22 16:42:41 +00:00
committed by Android (Google) Code Review
9 changed files with 67 additions and 8 deletions

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (C) 2021 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android">
<shape>
<solid android:color="?android:attr/colorBackground"/>
<corners android:radius="@dimen/notification_corner_radius" />
</shape>
</inset>

View File

@@ -25,7 +25,8 @@
<View
android:id="@+id/quick_settings_background"
android:layout_width="match_parent"
android:layout_height="0dp" />
android:layout_height="0dp"
android:background="@drawable/qs_background_primary" />
<com.android.systemui.qs.NonInterceptingScrollView
android:id="@+id/expanded_qs_scroll_view"

View File

@@ -20,6 +20,7 @@
<bool name="flag_notification_pipeline2">false</bool>
<bool name="flag_notification_pipeline2_rendering">false</bool>
<bool name="flag_shade_is_opaque">true</bool>
<!-- b/171917882 -->
<bool name="flag_notification_twocolumn">false</bool>

View File

@@ -67,6 +67,7 @@ public class QSContainerImpl extends FrameLayout {
private int mSideMargins;
private boolean mQsDisabled;
private boolean mBackgroundVisible;
private int mContentPadding = -1;
private boolean mAnimateBottomOnNextLayout;
@@ -122,6 +123,14 @@ public class QSContainerImpl extends FrameLayout {
return true;
}
/**
* If QS should have a solid or transparent background.
*/
public void setBackgroundVisible(boolean visible) {
mBackgroundVisible = visible;
updateBackgroundVisibility();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// QSPanel will show as many rows as it can (up to TileLayout.MAX_ROWS) such that the
@@ -174,7 +183,11 @@ public class QSContainerImpl extends FrameLayout {
final boolean disabled = (state2 & DISABLE2_QUICK_SETTINGS) != 0;
if (disabled == mQsDisabled) return;
mQsDisabled = disabled;
mBackground.setVisibility(mQsDisabled ? View.GONE : View.VISIBLE);
updateBackgroundVisibility();
}
private void updateBackgroundVisibility() {
mBackground.setVisibility(mQsDisabled || !mBackgroundVisible ? GONE : VISIBLE);
}
void updateResources(QSPanelController qsPanelController,

View File

@@ -44,6 +44,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.qs.customize.QSCustomizerController;
import com.android.systemui.qs.dagger.QSFragmentComponent;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.StatusBarState;
import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
import com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer;
@@ -105,6 +106,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
private QSPanelController mQSPanelController;
private QuickQSPanelController mQuickQSPanelController;
private QSCustomizerController mQSCustomizerController;
private FeatureFlags mFeatureFlags;
@Inject
public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
@@ -112,7 +114,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
StatusBarStateController statusBarStateController, CommandQueue commandQueue,
QSDetailDisplayer qsDetailDisplayer, @Named(QS_PANEL) MediaHost qsMediaHost,
@Named(QUICK_QS_PANEL) MediaHost qqsMediaHost,
QSFragmentComponent.Factory qsComponentFactory) {
QSFragmentComponent.Factory qsComponentFactory, FeatureFlags featureFlags) {
mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler;
mInjectionInflater = injectionInflater;
mCommandQueue = commandQueue;
@@ -122,6 +124,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mQsComponentFactory = qsComponentFactory;
commandQueue.observe(getLifecycle(), this);
mHost = qsTileHost;
mFeatureFlags = featureFlags;
mStatusBarStateController = statusBarStateController;
}
@@ -163,6 +166,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
mQSContainerImplController = qsFragmentComponent.getQSContainerImplController();
mQSContainerImplController.init();
mContainer = mQSContainerImplController.getView();
mContainer.setBackgroundVisible(!mFeatureFlags.isShadeOpaque());
mQSDetail.setQsPanel(mQSPanelController, mHeader, mFooter);
mQSAnimator = qsFragmentComponent.getQSAnimator();

View File

@@ -44,6 +44,10 @@ public class FeatureFlags {
return mFlagReader.isEnabled(R.bool.flag_notification_pipeline2_rendering);
}
public boolean isShadeOpaque() {
return mFlagReader.isEnabled(R.bool.flag_shade_is_opaque);
}
/** b/171917882 */
public boolean isTwoColumnNotificationShadeEnabled() {
return mFlagReader.isEnabled(R.bool.flag_notification_twocolumn);

View File

@@ -49,6 +49,7 @@ import com.android.systemui.R;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.notification.stack.ViewState;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -125,6 +126,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
*/
public static final float BUSY_SCRIM_ALPHA = 1f;
/**
* Scrim opacity that can have text on top.
*/
public static final float GAR_SCRIM_ALPHA = 0.6f;
static final int TAG_KEY_ANIM = R.id.scrim;
private static final int TAG_START_ALPHA = R.id.scrim_alpha_start;
private static final int TAG_END_ALPHA = R.id.scrim_alpha_end;
@@ -199,10 +205,11 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
AlarmManager alarmManager, KeyguardStateController keyguardStateController,
DelayedWakeLock.Builder delayedWakeLockBuilder, Handler handler,
KeyguardUpdateMonitor keyguardUpdateMonitor, DockManager dockManager,
BlurUtils blurUtils, ConfigurationController configurationController) {
BlurUtils blurUtils, ConfigurationController configurationController,
FeatureFlags featureFlags) {
mScrimStateListener = lightBarController::setScrimState;
mDefaultScrimAlpha = BUSY_SCRIM_ALPHA;
mDefaultScrimAlpha = featureFlags.isShadeOpaque() ? BUSY_SCRIM_ALPHA : GAR_SCRIM_ALPHA;
mBlurUtils = blurUtils;
mKeyguardStateController = keyguardStateController;

View File

@@ -51,6 +51,7 @@ import com.android.systemui.qs.tileimpl.QSFactoryImpl;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shared.plugins.PluginManager;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
@@ -87,6 +88,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
private MediaHost mQSMediaHost;
@Mock
private MediaHost mQQSMediaHost;
@Mock
private FeatureFlags mFeatureFlags;
public QSFragmentTest() {
super(QSFragment.class);
@@ -175,6 +178,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
new QSDetailDisplayer(),
mQSMediaHost,
mQQSMediaHost,
mQsComponentFactory);
mQsComponentFactory,
mFeatureFlags);
}
}

View File

@@ -50,6 +50,7 @@ import com.android.systemui.DejankUtils;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dock.DockManager;
import com.android.systemui.statusbar.BlurUtils;
import com.android.systemui.statusbar.FeatureFlags;
import com.android.systemui.statusbar.ScrimView;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -104,6 +105,8 @@ public class ScrimControllerTest extends SysuiTestCase {
private BlurUtils mBlurUtils;
@Mock
private ConfigurationController mConfigurationController;
@Mock
private FeatureFlags mFeatureFlags;
private static class AnimatorListener implements Animator.AnimatorListener {
@@ -211,13 +214,13 @@ public class ScrimControllerTest extends SysuiTestCase {
when(mDelayedWakeLockBuilder.setTag(any(String.class)))
.thenReturn(mDelayedWakeLockBuilder);
when(mDelayedWakeLockBuilder.build()).thenReturn(mWakeLock);
when(mFeatureFlags.isShadeOpaque()).thenReturn(true);
when(mDockManager.isDocked()).thenReturn(false);
mScrimController = new ScrimController(mLightBarController,
mDozeParamenters, mAlarmManager, mKeyguardStateController, mDelayedWakeLockBuilder,
new FakeHandler(mLooper.getLooper()), mKeyguardUpdateMonitor,
mDockManager, mBlurUtils, mConfigurationController);
mDockManager, mBlurUtils, mConfigurationController, mFeatureFlags);
mScrimController.setScrimVisibleListener(visible -> mScrimVisibility = visible);
mScrimController.attachViews(mScrimBehind, mScrimInFront, mScrimForBubble);
mScrimController.setAnimatorListener(mAnimatorListener);