Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +114 −83 Original line number Original line Diff line number Diff line Loading @@ -784,10 +784,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { if (!qsTap && !inButton) { if (!qsTap && !inButton) { mSettingsTracker.computeCurrentVelocity(1000); mSettingsTracker.computeCurrentVelocity(1000); final float vy = mSettingsTracker.getYVelocity(); final float vy = mSettingsTracker.getYVelocity(); final boolean animate = true; if (dy <= slop || vy <= 0) { if (dy <= slop || vy <= 0) { flipToNotifications(); flipToNotifications(animate); } else { } else { flipToSettings(); flipToSettings(animate); } } } } mSettingsTracker.recycle(); mSettingsTracker.recycle(); Loading Loading @@ -1661,7 +1662,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mStatusBarWindow.cancelExpandHelper(); mStatusBarWindow.cancelExpandHelper(); mStatusBarView.collapseAllPanels(true); mStatusBarView.collapseAllPanels(true); if (isFlippedToSettings()) { if (isFlippedToSettings()) { flipToNotifications(); flipToNotifications(true /*animate*/); } } } } } } Loading Loading @@ -1721,21 +1722,29 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mNotificationPanel.expand(); mNotificationPanel.expand(); if (mStackScroller.getVisibility() != View.VISIBLE) { if (mStackScroller.getVisibility() != View.VISIBLE) { flipToNotifications(); flipToNotifications(true /*animate*/); } } if (false) postStartTracing(); if (false) postStartTracing(); } } public void flipToNotifications() { private static void cancelAnim(Animator anim) { if (mFlipSettingsViewAnim != null) mFlipSettingsViewAnim.cancel(); if (anim != null) { if (mScrollViewAnim != null) mScrollViewAnim.cancel(); anim.cancel(); } } public void flipToNotifications(boolean animate) { cancelAnim(mFlipSettingsViewAnim); cancelAnim(mScrollViewAnim); cancelAnim(mClearButtonAnim); mHeaderFlipper.cancel(); mHeaderFlipper.cancel(); mKeyguardFlipper.cancel(); mKeyguardFlipper.cancel(); if (mClearButtonAnim != null) mClearButtonAnim.cancel(); mStackScroller.setVisibility(View.VISIBLE); mStackScroller.setVisibility(View.VISIBLE); final int h = mNotificationPanel.getMeasuredHeight(); final int h = mNotificationPanel.getMeasuredHeight(); final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : 0; if (animate) { final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : 0; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : h; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : h; mScrollViewAnim = start( mScrollViewAnim = start( interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, Loading @@ -1745,12 +1754,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mFlipSettingsViewAnim = start( mFlipSettingsViewAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, -h) ObjectAnimator.ofFloat( ) mFlipSettingsView, View.TRANSLATION_Y, settingsY, -h)) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mFlipSettingsView, View.INVISIBLE)); mFlipSettingsView, View.INVISIBLE)); mHeaderFlipper.flipToNotifications(); } else { mKeyguardFlipper.flipToNotifications(); mStackScroller.setTranslationY(0); mFlipSettingsView.setTranslationY(-h); mFlipSettingsView.setVisibility(View.INVISIBLE); } mHeaderFlipper.flipToNotifications(animate); mKeyguardFlipper.flipToNotifications(animate); mClearButton.setVisibility(View.VISIBLE); mClearButton.setVisibility(View.VISIBLE); mClearButton.setAlpha(0f); mClearButton.setAlpha(0f); setAreThereNotifications(); // this will show/hide the button as necessary setAreThereNotifications(); // this will show/hide the button as necessary Loading @@ -1758,7 +1772,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { public void run() { public void run() { updateCarrierLabelVisibility(false); updateCarrierLabelVisibility(false); } } }, FLIP_DURATION - 150); }, animate ? FLIP_DURATION - 150 : 0); if (mOnFlipRunnable != null) { if (mOnFlipRunnable != null) { mOnFlipRunnable.run(); mOnFlipRunnable.run(); } } Loading @@ -1777,7 +1791,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mNotificationPanel.expand(); mNotificationPanel.expand(); if (mFlipSettingsView.getVisibility() != View.VISIBLE if (mFlipSettingsView.getVisibility() != View.VISIBLE || mFlipSettingsView.getTranslationY() < 0) { || mFlipSettingsView.getTranslationY() < 0) { flipToSettings(); flipToSettings(true /*animate*/); } } if (false) postStartTracing(); if (false) postStartTracing(); Loading @@ -1790,24 +1804,27 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { return false; return false; } } public void flipToSettings() { public void flipToSettings(boolean animate) { // Settings are not available in setup // Settings are not available in setup if (!mUserSetup) return; if (!mUserSetup) return; if (mFlipSettingsViewAnim != null) mFlipSettingsViewAnim.cancel(); cancelAnim(mFlipSettingsViewAnim); if (mScrollViewAnim != null) mScrollViewAnim.cancel(); cancelAnim(mScrollViewAnim); mHeaderFlipper.cancel(); mHeaderFlipper.cancel(); mKeyguardFlipper.cancel(); mKeyguardFlipper.cancel(); if (mClearButtonAnim != null) mClearButtonAnim.cancel(); cancelAnim(mClearButtonAnim); mFlipSettingsView.setVisibility(View.VISIBLE); mFlipSettingsView.setVisibility(View.VISIBLE); final int h = mNotificationPanel.getMeasuredHeight(); final int h = mNotificationPanel.getMeasuredHeight(); final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : -h; if (animate) { final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : -h; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : 0; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : 0; mFlipSettingsViewAnim = start( mFlipSettingsViewAnim = start( startDelay(0, startDelay(0, interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, 0f) ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, 0f) .setDuration(FLIP_DURATION) .setDuration(FLIP_DURATION) ))); ))); mScrollViewAnim = start( mScrollViewAnim = start( Loading @@ -1817,31 +1834,33 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { ) ) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mStackScroller, View.INVISIBLE)); mStackScroller, View.INVISIBLE)); mHeaderFlipper.flipToSettings(); } else { mKeyguardFlipper.flipToSettings(); mFlipSettingsView.setTranslationY(0); mStackScroller.setTranslationY(h); mStackScroller.setVisibility(View.INVISIBLE); } mHeaderFlipper.flipToSettings(animate); mKeyguardFlipper.flipToSettings(animate); if (animate) { mClearButtonAnim = start( mClearButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mClearButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mClearButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mClearButton, View.INVISIBLE)); mClearButton, View.INVISIBLE)); } else { mClearButton.setAlpha(0); mClearButton.setVisibility(View.INVISIBLE); } mNotificationPanel.postDelayed(new Runnable() { mNotificationPanel.postDelayed(new Runnable() { public void run() { public void run() { updateCarrierLabelVisibility(false); updateCarrierLabelVisibility(false); } } }, FLIP_DURATION - 150); }, animate ? FLIP_DURATION - 150 : 0); if (mOnFlipRunnable != null) { if (mOnFlipRunnable != null) { mOnFlipRunnable.run(); mOnFlipRunnable.run(); } } } } public void flipPanels() { if (mFlipSettingsView.getVisibility() != View.VISIBLE) { flipToSettings(); } else { flipToNotifications(); } } public void animateCollapseQuickSettings() { public void animateCollapseQuickSettings() { mStatusBarView.collapseAllPanels(true); mStatusBarView.collapseAllPanels(true); } } Loading Loading @@ -2919,7 +2938,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { private void updateKeyguardState() { private void updateKeyguardState() { if (mOnKeyguard) { if (mOnKeyguard) { if (isFlippedToSettings()) { if (isFlippedToSettings()) { flipToNotifications(); flipToNotifications(false /*animate*/); } } mKeyguardStatusView.setVisibility(View.VISIBLE); mKeyguardStatusView.setVisibility(View.VISIBLE); mKeyguardBottomArea.setVisibility(View.VISIBLE); mKeyguardBottomArea.setVisibility(View.VISIBLE); Loading Loading @@ -3080,36 +3099,48 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { } } } } public void flipToSettings() { public void flipToSettings(boolean animate) { mNotificationButton.setVisibility(View.VISIBLE); if (animate) { mSettingsButtonAnim = start( mSettingsButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION_OUT), .setDuration(FLIP_DURATION_OUT), mStackScroller, View.INVISIBLE)); mStackScroller, View.INVISIBLE)); mNotificationButton.setVisibility(View.VISIBLE); mNotificationButtonAnim = start( mNotificationButtonAnim = start( startDelay(FLIP_DURATION_OUT, startDelay(FLIP_DURATION_OUT, ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) .setDuration(FLIP_DURATION_IN))); .setDuration(FLIP_DURATION_IN))); } else { mSettingsButton.setAlpha(0f); mSettingsButton.setVisibility(View.INVISIBLE); mNotificationButton.setAlpha(1f); } } } public void flipToNotifications() { public void flipToNotifications(boolean animate) { mSettingsButton.setVisibility(View.VISIBLE); if (animate) { mNotificationButtonAnim = start( mNotificationButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION_OUT), .setDuration(FLIP_DURATION_OUT), mNotificationButton, View.INVISIBLE)); mNotificationButton, View.INVISIBLE)); mSettingsButton.setVisibility(View.VISIBLE); mSettingsButtonAnim = start( mSettingsButtonAnim = start( startDelay(FLIP_DURATION_OUT, startDelay(FLIP_DURATION_OUT, ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) .setDuration(FLIP_DURATION_IN))); .setDuration(FLIP_DURATION_IN))); } else { mNotificationButton.setVisibility(View.INVISIBLE); mNotificationButton.setAlpha(0f); mSettingsButton.setAlpha(1f); } } } public void cancel() { public void cancel() { if (mSettingsButtonAnim != null) mSettingsButtonAnim.cancel(); cancelAnim(mSettingsButtonAnim); if (mNotificationButtonAnim != null) mNotificationButtonAnim.cancel(); cancelAnim(mNotificationButtonAnim); } } public void setVisibility(int vis) { public void setVisibility(int vis) { Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +114 −83 Original line number Original line Diff line number Diff line Loading @@ -784,10 +784,11 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { if (!qsTap && !inButton) { if (!qsTap && !inButton) { mSettingsTracker.computeCurrentVelocity(1000); mSettingsTracker.computeCurrentVelocity(1000); final float vy = mSettingsTracker.getYVelocity(); final float vy = mSettingsTracker.getYVelocity(); final boolean animate = true; if (dy <= slop || vy <= 0) { if (dy <= slop || vy <= 0) { flipToNotifications(); flipToNotifications(animate); } else { } else { flipToSettings(); flipToSettings(animate); } } } } mSettingsTracker.recycle(); mSettingsTracker.recycle(); Loading Loading @@ -1661,7 +1662,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mStatusBarWindow.cancelExpandHelper(); mStatusBarWindow.cancelExpandHelper(); mStatusBarView.collapseAllPanels(true); mStatusBarView.collapseAllPanels(true); if (isFlippedToSettings()) { if (isFlippedToSettings()) { flipToNotifications(); flipToNotifications(true /*animate*/); } } } } } } Loading Loading @@ -1721,21 +1722,29 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mNotificationPanel.expand(); mNotificationPanel.expand(); if (mStackScroller.getVisibility() != View.VISIBLE) { if (mStackScroller.getVisibility() != View.VISIBLE) { flipToNotifications(); flipToNotifications(true /*animate*/); } } if (false) postStartTracing(); if (false) postStartTracing(); } } public void flipToNotifications() { private static void cancelAnim(Animator anim) { if (mFlipSettingsViewAnim != null) mFlipSettingsViewAnim.cancel(); if (anim != null) { if (mScrollViewAnim != null) mScrollViewAnim.cancel(); anim.cancel(); } } public void flipToNotifications(boolean animate) { cancelAnim(mFlipSettingsViewAnim); cancelAnim(mScrollViewAnim); cancelAnim(mClearButtonAnim); mHeaderFlipper.cancel(); mHeaderFlipper.cancel(); mKeyguardFlipper.cancel(); mKeyguardFlipper.cancel(); if (mClearButtonAnim != null) mClearButtonAnim.cancel(); mStackScroller.setVisibility(View.VISIBLE); mStackScroller.setVisibility(View.VISIBLE); final int h = mNotificationPanel.getMeasuredHeight(); final int h = mNotificationPanel.getMeasuredHeight(); final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : 0; if (animate) { final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : 0; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : h; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : h; mScrollViewAnim = start( mScrollViewAnim = start( interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, Loading @@ -1745,12 +1754,17 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mFlipSettingsViewAnim = start( mFlipSettingsViewAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, -h) ObjectAnimator.ofFloat( ) mFlipSettingsView, View.TRANSLATION_Y, settingsY, -h)) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mFlipSettingsView, View.INVISIBLE)); mFlipSettingsView, View.INVISIBLE)); mHeaderFlipper.flipToNotifications(); } else { mKeyguardFlipper.flipToNotifications(); mStackScroller.setTranslationY(0); mFlipSettingsView.setTranslationY(-h); mFlipSettingsView.setVisibility(View.INVISIBLE); } mHeaderFlipper.flipToNotifications(animate); mKeyguardFlipper.flipToNotifications(animate); mClearButton.setVisibility(View.VISIBLE); mClearButton.setVisibility(View.VISIBLE); mClearButton.setAlpha(0f); mClearButton.setAlpha(0f); setAreThereNotifications(); // this will show/hide the button as necessary setAreThereNotifications(); // this will show/hide the button as necessary Loading @@ -1758,7 +1772,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { public void run() { public void run() { updateCarrierLabelVisibility(false); updateCarrierLabelVisibility(false); } } }, FLIP_DURATION - 150); }, animate ? FLIP_DURATION - 150 : 0); if (mOnFlipRunnable != null) { if (mOnFlipRunnable != null) { mOnFlipRunnable.run(); mOnFlipRunnable.run(); } } Loading @@ -1777,7 +1791,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { mNotificationPanel.expand(); mNotificationPanel.expand(); if (mFlipSettingsView.getVisibility() != View.VISIBLE if (mFlipSettingsView.getVisibility() != View.VISIBLE || mFlipSettingsView.getTranslationY() < 0) { || mFlipSettingsView.getTranslationY() < 0) { flipToSettings(); flipToSettings(true /*animate*/); } } if (false) postStartTracing(); if (false) postStartTracing(); Loading @@ -1790,24 +1804,27 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { return false; return false; } } public void flipToSettings() { public void flipToSettings(boolean animate) { // Settings are not available in setup // Settings are not available in setup if (!mUserSetup) return; if (!mUserSetup) return; if (mFlipSettingsViewAnim != null) mFlipSettingsViewAnim.cancel(); cancelAnim(mFlipSettingsViewAnim); if (mScrollViewAnim != null) mScrollViewAnim.cancel(); cancelAnim(mScrollViewAnim); mHeaderFlipper.cancel(); mHeaderFlipper.cancel(); mKeyguardFlipper.cancel(); mKeyguardFlipper.cancel(); if (mClearButtonAnim != null) mClearButtonAnim.cancel(); cancelAnim(mClearButtonAnim); mFlipSettingsView.setVisibility(View.VISIBLE); mFlipSettingsView.setVisibility(View.VISIBLE); final int h = mNotificationPanel.getMeasuredHeight(); final int h = mNotificationPanel.getMeasuredHeight(); final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : -h; if (animate) { final float settingsY = mSettingsTracker != null ? mFlipSettingsView.getTranslationY() : -h; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : 0; final float scrollerY = mSettingsTracker != null ? mStackScroller.getTranslationY() : 0; mFlipSettingsViewAnim = start( mFlipSettingsViewAnim = start( startDelay(0, startDelay(0, interpolator(mDecelerateInterpolator, interpolator(mDecelerateInterpolator, ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, 0f) ObjectAnimator.ofFloat(mFlipSettingsView, View.TRANSLATION_Y, settingsY, 0f) .setDuration(FLIP_DURATION) .setDuration(FLIP_DURATION) ))); ))); mScrollViewAnim = start( mScrollViewAnim = start( Loading @@ -1817,31 +1834,33 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { ) ) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mStackScroller, View.INVISIBLE)); mStackScroller, View.INVISIBLE)); mHeaderFlipper.flipToSettings(); } else { mKeyguardFlipper.flipToSettings(); mFlipSettingsView.setTranslationY(0); mStackScroller.setTranslationY(h); mStackScroller.setVisibility(View.INVISIBLE); } mHeaderFlipper.flipToSettings(animate); mKeyguardFlipper.flipToSettings(animate); if (animate) { mClearButtonAnim = start( mClearButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mClearButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mClearButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION), .setDuration(FLIP_DURATION), mClearButton, View.INVISIBLE)); mClearButton, View.INVISIBLE)); } else { mClearButton.setAlpha(0); mClearButton.setVisibility(View.INVISIBLE); } mNotificationPanel.postDelayed(new Runnable() { mNotificationPanel.postDelayed(new Runnable() { public void run() { public void run() { updateCarrierLabelVisibility(false); updateCarrierLabelVisibility(false); } } }, FLIP_DURATION - 150); }, animate ? FLIP_DURATION - 150 : 0); if (mOnFlipRunnable != null) { if (mOnFlipRunnable != null) { mOnFlipRunnable.run(); mOnFlipRunnable.run(); } } } } public void flipPanels() { if (mFlipSettingsView.getVisibility() != View.VISIBLE) { flipToSettings(); } else { flipToNotifications(); } } public void animateCollapseQuickSettings() { public void animateCollapseQuickSettings() { mStatusBarView.collapseAllPanels(true); mStatusBarView.collapseAllPanels(true); } } Loading Loading @@ -2919,7 +2938,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { private void updateKeyguardState() { private void updateKeyguardState() { if (mOnKeyguard) { if (mOnKeyguard) { if (isFlippedToSettings()) { if (isFlippedToSettings()) { flipToNotifications(); flipToNotifications(false /*animate*/); } } mKeyguardStatusView.setVisibility(View.VISIBLE); mKeyguardStatusView.setVisibility(View.VISIBLE); mKeyguardBottomArea.setVisibility(View.VISIBLE); mKeyguardBottomArea.setVisibility(View.VISIBLE); Loading Loading @@ -3080,36 +3099,48 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode { } } } } public void flipToSettings() { public void flipToSettings(boolean animate) { mNotificationButton.setVisibility(View.VISIBLE); if (animate) { mSettingsButtonAnim = start( mSettingsButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION_OUT), .setDuration(FLIP_DURATION_OUT), mStackScroller, View.INVISIBLE)); mStackScroller, View.INVISIBLE)); mNotificationButton.setVisibility(View.VISIBLE); mNotificationButtonAnim = start( mNotificationButtonAnim = start( startDelay(FLIP_DURATION_OUT, startDelay(FLIP_DURATION_OUT, ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 1f) .setDuration(FLIP_DURATION_IN))); .setDuration(FLIP_DURATION_IN))); } else { mSettingsButton.setAlpha(0f); mSettingsButton.setVisibility(View.INVISIBLE); mNotificationButton.setAlpha(1f); } } } public void flipToNotifications() { public void flipToNotifications(boolean animate) { mSettingsButton.setVisibility(View.VISIBLE); if (animate) { mNotificationButtonAnim = start( mNotificationButtonAnim = start( setVisibilityWhenDone( setVisibilityWhenDone( ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 0f) ObjectAnimator.ofFloat(mNotificationButton, View.ALPHA, 0f) .setDuration(FLIP_DURATION_OUT), .setDuration(FLIP_DURATION_OUT), mNotificationButton, View.INVISIBLE)); mNotificationButton, View.INVISIBLE)); mSettingsButton.setVisibility(View.VISIBLE); mSettingsButtonAnim = start( mSettingsButtonAnim = start( startDelay(FLIP_DURATION_OUT, startDelay(FLIP_DURATION_OUT, ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) ObjectAnimator.ofFloat(mSettingsButton, View.ALPHA, 1f) .setDuration(FLIP_DURATION_IN))); .setDuration(FLIP_DURATION_IN))); } else { mNotificationButton.setVisibility(View.INVISIBLE); mNotificationButton.setAlpha(0f); mSettingsButton.setAlpha(1f); } } } public void cancel() { public void cancel() { if (mSettingsButtonAnim != null) mSettingsButtonAnim.cancel(); cancelAnim(mSettingsButtonAnim); if (mNotificationButtonAnim != null) mNotificationButtonAnim.cancel(); cancelAnim(mNotificationButtonAnim); } } public void setVisibility(int vis) { public void setVisibility(int vis) { Loading