diff options
author | John Spurlock <jspurlock@google.com> | 2014-04-21 15:56:25 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-04-21 15:56:25 +0000 |
commit | 06661993037c28d2e189bfe809304a5d0e3ba5d8 (patch) | |
tree | c6a3bda66245d291aea6d2d648f6bc4f26cf0ee5 | |
parent | 507288322b11ae27ab8f47438d3ef4203dad0192 (diff) | |
parent | f0b06c773867610d747d2063e74f13c12e3595c4 (diff) | |
download | frameworks_base-06661993037c28d2e189bfe809304a5d0e3ba5d8.zip frameworks_base-06661993037c28d2e189bfe809304a5d0e3ba5d8.tar.gz frameworks_base-06661993037c28d2e189bfe809304a5d0e3ba5d8.tar.bz2 |
Merge "Quick settings bug fixes."
3 files changed, 32 insertions, 19 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 45ac50b..5d75801 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -38,6 +38,7 @@ public class NotificationPanelView extends PanelView { private int[] mTempChildLocation = new int[2]; private View mNotificationParent; private boolean mTrackingSettings; + private float mExpandedHeight = -1; public NotificationPanelView(Context context, AttributeSet attrs) { super(context, attrs); @@ -173,6 +174,8 @@ public class NotificationPanelView extends PanelView { * @param expandedHeight the new expanded height */ private void updateNotificationStackHeight(float expandedHeight) { + if (mExpandedHeight == expandedHeight) return; + mExpandedHeight = expandedHeight; mNotificationStackScroller.setIsExpanded(expandedHeight > 0.0f); float childOffset = getRelativeTop(mNotificationStackScroller) - mNotificationParent.getTranslationY(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index bec669f..4ad582f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -747,6 +747,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { } public boolean onSettingsEvent(MotionEvent event) { + userActivity(); + if (mSettingsClosing + && mFlipSettingsViewAnim != null && mFlipSettingsViewAnim.isRunning()) { + return true; + } if (mSettingsTracker != null) { mSettingsTracker.addMovement(event); } @@ -814,15 +819,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { } private void positionSettings(float dy) { - final int h = mFlipSettingsView.getMeasuredHeight(); - final int ph = mNotificationPanel.getMeasuredHeight(); if (mSettingsClosing) { + final int ph = mNotificationPanel.getMeasuredHeight(); dy = Math.min(Math.max(-ph, dy), 0); mFlipSettingsView.setTranslationY(dy); mStackScroller.setTranslationY(ph + dy); } else { - dy = Math.min(Math.max(0, dy), ph); - mFlipSettingsView.setTranslationY(-h + dy - mNotificationPadding * 2); + final int h = mFlipSettingsView.getBottom(); + dy = Math.min(Math.max(0, dy), h); + mFlipSettingsView.setTranslationY(-h + dy); mStackScroller.setTranslationY(dy); } } @@ -1733,17 +1738,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mHeaderFlipper.cancel(); mKeyguardFlipper.cancel(); if (mClearButtonAnim != null) mClearButtonAnim.cancel(); - mStackScroller.setVisibility(View.VISIBLE); final int h = mNotificationPanel.getMeasuredHeight(); final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : 0; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : h; mScrollViewAnim = start( - startDelay(0, interpolator(mDecelerateInterpolator, ObjectAnimator.ofFloat(mStackScroller, View.TRANSLATION_Y, scrollerY, 0) .setDuration(FLIP_DURATION) - ))); + )); mFlipSettingsViewAnim = start( setVisibilityWhenDone( interpolator(mDecelerateInterpolator, @@ -3058,25 +3061,27 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mSettingsButtonAnim = start( setVisibilityWhenDone( ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 0f) - .setDuration(FLIP_DURATION), + .setDuration(FLIP_DURATION_OUT), mStackScroller, View.INVISIBLE)); mNotificationButton.setVisibility(View.VISIBLE); mNotificationButtonAnim = start( - ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) - .setDuration(FLIP_DURATION)); + startDelay(FLIP_DURATION_OUT, + ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) + .setDuration(FLIP_DURATION_IN))); } public void flipToNotifications() { mNotificationButtonAnim = start( setVisibilityWhenDone( ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 0f) - .setDuration(FLIP_DURATION), + .setDuration(FLIP_DURATION_OUT), mNotificationButton, View.INVISIBLE)); mSettingsButton.setVisibility(View.VISIBLE); mSettingsButtonAnim = start( - ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) - .setDuration(FLIP_DURATION)); + startDelay(FLIP_DURATION_OUT, + ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) + .setDuration(FLIP_DURATION_IN))); } public void cancel() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java index 02e9c0d..c44cb0c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickSettingsContainerView.java @@ -62,18 +62,19 @@ class QuickSettingsContainerView extends FrameLayout { @Override protected void onFinishInflate() { super.onFinishInflate(); - mScrim = new ScrimView(mContext); - addView(mScrim); - mScrim.setAlpha(sShowScrim ? 1 : 0); + if (sShowScrim) { + mScrim = new ScrimView(mContext); + addView(mScrim); + } // TODO: Setup the layout transitions LayoutTransition transitions = getLayoutTransition(); } @Override public boolean onTouchEvent(MotionEvent event) { - if (mScrim.getAlpha() == 1) { - mScrim.animate().alpha(0).setDuration(1000).start(); + if (mScrim != null) { sShowScrim = false; + removeView(mScrim); } return super.onTouchEvent(event); } @@ -144,7 +145,9 @@ class QuickSettingsContainerView extends FrameLayout { @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { - mScrim.bringToFront(); + if (mScrim != null) { + mScrim.bringToFront(); + } final int N = getChildCount(); final boolean isLayoutRtl = isLayoutRtl(); final int width = getWidth(); @@ -206,6 +209,7 @@ class QuickSettingsContainerView extends FrameLayout { } private static final class ScrimView extends View { + private static final int SCRIM = 0x4f000000; private static final int COLOR = 0xaf4285f4; private final Paint mLinePaint; @@ -240,6 +244,7 @@ class QuickSettingsContainerView extends FrameLayout { final int h = getMeasuredHeight(); final int f = mStrokeWidth * 3 / 4; + canvas.drawColor(SCRIM); canvas.drawPath(line(f, h / 2, w - f, h / 2), mLinePaint); canvas.drawPath(line(w / 2, f, w / 2, h - f), mLinePaint); |