Merge "Do not animate QSCustomizer when screen off" into qt-qpr1-dev

am: 6fdfdbed1d

Change-Id: I8012329b07b08aeceb4b4e2d101f20b44572ea3c
This commit is contained in:
Fabian Kozynski
2019-09-04 12:21:57 -07:00
committed by android-build-merger
3 changed files with 33 additions and 11 deletions

View File

@@ -38,8 +38,8 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto;
import com.android.systemui.Dependency;
import com.android.systemui.R; import com.android.systemui.R;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.plugins.qs.QS; import com.android.systemui.plugins.qs.QS;
import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.qs.QSTile;
import com.android.systemui.qs.QSDetailClipper; import com.android.systemui.qs.QSDetailClipper;
@@ -52,6 +52,8 @@ import com.android.systemui.statusbar.policy.KeyguardMonitor.Callback;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.inject.Inject;
/** /**
* Allows full-screen customization of QS, through show() and hide(). * Allows full-screen customization of QS, through show() and hide().
* *
@@ -66,6 +68,8 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
private final QSDetailClipper mClipper; private final QSDetailClipper mClipper;
private final LightBarController mLightBarController; private final LightBarController mLightBarController;
private KeyguardMonitor mKeyguardMonitor;
private final ScreenLifecycle mScreenLifecycle;
private final TileQueryHelper mTileQueryHelper; private final TileQueryHelper mTileQueryHelper;
private final View mTransparentView; private final View mTransparentView;
@@ -82,7 +86,11 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
private boolean mOpening; private boolean mOpening;
private boolean mIsShowingNavBackdrop; private boolean mIsShowingNavBackdrop;
public QSCustomizer(Context context, AttributeSet attrs) { @Inject
public QSCustomizer(Context context, AttributeSet attrs,
LightBarController lightBarController,
KeyguardMonitor keyguardMonitor,
ScreenLifecycle screenLifecycle) {
super(new ContextThemeWrapper(context, R.style.edit_theme), attrs); super(new ContextThemeWrapper(context, R.style.edit_theme), attrs);
LayoutInflater.from(getContext()).inflate(R.layout.qs_customize_panel_content, this); LayoutInflater.from(getContext()).inflate(R.layout.qs_customize_panel_content, this);
@@ -115,7 +123,9 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
DefaultItemAnimator animator = new DefaultItemAnimator(); DefaultItemAnimator animator = new DefaultItemAnimator();
animator.setMoveDuration(TileAdapter.MOVE_DURATION); animator.setMoveDuration(TileAdapter.MOVE_DURATION);
mRecyclerView.setItemAnimator(animator); mRecyclerView.setItemAnimator(animator);
mLightBarController = Dependency.get(LightBarController.class); mLightBarController = lightBarController;
mKeyguardMonitor = keyguardMonitor;
mScreenLifecycle = screenLifecycle;
updateNavBackDrop(getResources().getConfiguration()); updateNavBackDrop(getResources().getConfiguration());
} }
@@ -177,7 +187,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
queryTiles(); queryTiles();
mNotifQsContainer.setCustomizerAnimating(true); mNotifQsContainer.setCustomizerAnimating(true);
mNotifQsContainer.setCustomizerShowing(true); mNotifQsContainer.setCustomizerShowing(true);
Dependency.get(KeyguardMonitor.class).addCallback(mKeyguardCallback); mKeyguardMonitor.addCallback(mKeyguardCallback);
updateNavColors(); updateNavColors();
} }
} }
@@ -193,7 +203,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
queryTiles(); queryTiles();
mNotifQsContainer.setCustomizerAnimating(false); mNotifQsContainer.setCustomizerAnimating(false);
mNotifQsContainer.setCustomizerShowing(true); mNotifQsContainer.setCustomizerShowing(true);
Dependency.get(KeyguardMonitor.class).addCallback(mKeyguardCallback); mKeyguardMonitor.addCallback(mKeyguardCallback);
updateNavColors(); updateNavColors();
} }
} }
@@ -203,16 +213,21 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
} }
public void hide() { public void hide() {
final boolean animate = mScreenLifecycle.getScreenState() != ScreenLifecycle.SCREEN_OFF;
if (isShown) { if (isShown) {
MetricsLogger.hidden(getContext(), MetricsProto.MetricsEvent.QS_EDIT); MetricsLogger.hidden(getContext(), MetricsProto.MetricsEvent.QS_EDIT);
isShown = false; isShown = false;
mToolbar.dismissPopupMenus(); mToolbar.dismissPopupMenus();
setCustomizing(false); setCustomizing(false);
save(); save();
mClipper.animateCircularClip(mX, mY, false, mCollapseAnimationListener); if (animate) {
mNotifQsContainer.setCustomizerAnimating(true); mClipper.animateCircularClip(mX, mY, false, mCollapseAnimationListener);
} else {
setVisibility(View.GONE);
}
mNotifQsContainer.setCustomizerAnimating(animate);
mNotifQsContainer.setCustomizerShowing(false); mNotifQsContainer.setCustomizerShowing(false);
Dependency.get(KeyguardMonitor.class).removeCallback(mKeyguardCallback); mKeyguardMonitor.removeCallback(mKeyguardCallback);
updateNavColors(); updateNavColors();
} }
} }
@@ -268,7 +283,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
public void saveInstanceState(Bundle outState) { public void saveInstanceState(Bundle outState) {
if (isShown) { if (isShown) {
Dependency.get(KeyguardMonitor.class).removeCallback(mKeyguardCallback); mKeyguardMonitor.removeCallback(mKeyguardCallback);
} }
outState.putBoolean(EXTRA_QS_CUSTOMIZING, mCustomizing); outState.putBoolean(EXTRA_QS_CUSTOMIZING, mCustomizing);
} }
@@ -300,7 +315,7 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene
@Override @Override
public void onKeyguardShowingChanged() { public void onKeyguardShowingChanged() {
if (!isAttachedToWindow()) return; if (!isAttachedToWindow()) return;
if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { if (mKeyguardMonitor.isShowing() && !mOpening) {
hide(); hide();
} }
} }

View File

@@ -1738,7 +1738,8 @@ public class NotificationPanelView extends PanelView implements
private void setQsExpansion(float height) { private void setQsExpansion(float height) {
height = Math.min(Math.max(height, mQsMinExpansionHeight), mQsMaxExpansionHeight); height = Math.min(Math.max(height, mQsMinExpansionHeight), mQsMaxExpansionHeight);
mQsFullyExpanded = height == mQsMaxExpansionHeight && mQsMaxExpansionHeight != 0; mQsFullyExpanded = height == mQsMaxExpansionHeight && mQsMaxExpansionHeight != 0;
if (height > mQsMinExpansionHeight && !mQsExpanded && !mStackScrollerOverscrolling) { if (height > mQsMinExpansionHeight && !mQsExpanded && !mStackScrollerOverscrolling
&& !mDozing) {
setQsExpanded(true); setQsExpanded(true);
} else if (height <= mQsMinExpansionHeight && mQsExpanded) { } else if (height <= mQsMinExpansionHeight && mQsExpanded) {
setQsExpanded(false); setQsExpanded(false);

View File

@@ -32,6 +32,7 @@ import com.android.systemui.qs.QSFooterImpl;
import com.android.systemui.qs.QSPanel; import com.android.systemui.qs.QSPanel;
import com.android.systemui.qs.QuickQSPanel; import com.android.systemui.qs.QuickQSPanel;
import com.android.systemui.qs.QuickStatusBarHeader; import com.android.systemui.qs.QuickStatusBarHeader;
import com.android.systemui.qs.customize.QSCustomizer;
import com.android.systemui.statusbar.NotificationShelf; import com.android.systemui.statusbar.NotificationShelf;
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.phone.LockIcon; import com.android.systemui.statusbar.phone.LockIcon;
@@ -172,6 +173,11 @@ public class InjectionInflationController {
* Creates the QuickQSPanel. * Creates the QuickQSPanel.
*/ */
QuickQSPanel createQuickQSPanel(); QuickQSPanel createQuickQSPanel();
/**
* Creates the QSCustomizer.
*/
QSCustomizer createQSCustomizer();
} }
/** /**