Cleaned up status bar closing handling

This could lead to a bug where there was a hole in the shade.

Bug: 17961295
Change-Id: Ief4bb3f79433a062c4904329e7ca130987d7fe0f
This commit is contained in:
Selim Cinek
2014-10-24 17:52:35 +02:00
parent 5c1a49651b
commit dbbcfbe8ae
4 changed files with 41 additions and 21 deletions

View File

@@ -236,4 +236,8 @@ public class PanelBar extends FrameLayout {
public void onExpandingFinished() {
}
public void onClosingFinished() {
}
}

View File

@@ -107,7 +107,7 @@ public abstract class PanelView extends FrameLayout {
};
protected void onExpandingFinished() {
mClosing = false;
endClosing();
mBar.onExpandingFinished();
}
@@ -250,9 +250,7 @@ public abstract class PanelView extends FrameLayout {
trackMovement(event);
if (!waitForTouchSlop || (mHeightAnimator != null && !mHintAnimationRunning) ||
mPeekPending || mPeekAnimator != null) {
if (mHeightAnimator != null) {
mHeightAnimator.cancel(); // end any outstanding animations
}
cancelHeightAnimator();
cancelPeek();
mTouchSlopExceeded = (mHeightAnimator != null && !mHintAnimationRunning)
|| mPeekPending || mPeekAnimator != null;
@@ -293,9 +291,7 @@ public abstract class PanelView extends FrameLayout {
mInitialTouchY = y;
h = 0;
}
if (mHeightAnimator != null) {
mHeightAnimator.cancel(); // end any outstanding animations
}
cancelHeightAnimator();
removeCallbacks(mPeekRunnable);
mPeekPending = false;
onTrackingStarted();
@@ -372,7 +368,7 @@ public abstract class PanelView extends FrameLayout {
}
protected void onTrackingStarted() {
mClosing = false;
endClosing();
mTracking = true;
mCollapseAfterPeek = false;
mBar.onTrackingStarted(PanelView.this);
@@ -407,9 +403,7 @@ public abstract class PanelView extends FrameLayout {
mStatusBar.userActivity();
if (mHeightAnimator != null && !mHintAnimationRunning ||
mPeekPending || mPeekAnimator != null) {
if (mHeightAnimator != null) {
mHeightAnimator.cancel(); // end any outstanding animations
}
cancelHeightAnimator();
cancelPeek();
mTouchSlopExceeded = true;
return true;
@@ -441,9 +435,7 @@ public abstract class PanelView extends FrameLayout {
trackMovement(event);
if (scrolledToBottom) {
if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) {
if (mHeightAnimator != null) {
mHeightAnimator.cancel();
}
cancelHeightAnimator();
mInitialOffsetOnTouch = mExpandedHeight;
mInitialTouchY = y;
mInitialTouchX = x;
@@ -461,6 +453,20 @@ public abstract class PanelView extends FrameLayout {
return false;
}
private void cancelHeightAnimator() {
if (mHeightAnimator != null) {
mHeightAnimator.cancel();
}
endClosing();
}
private void endClosing() {
if (mClosing) {
mClosing = false;
onClosingFinished();
}
}
private void initVelocityTracker() {
if (mVelocityTracker != null) {
mVelocityTracker.recycle();
@@ -700,9 +706,7 @@ public abstract class PanelView extends FrameLayout {
mPeekRunnable.run();
}
} else if (!isFullyCollapsed() && !mTracking && !mClosing) {
if (mHeightAnimator != null) {
mHeightAnimator.cancel();
}
cancelHeightAnimator();
mClosing = true;
notifyExpandingStarted();
if (delayed) {
@@ -785,13 +789,16 @@ public abstract class PanelView extends FrameLayout {
private void abortAnimations() {
cancelPeek();
if (mHeightAnimator != null) {
mHeightAnimator.cancel();
}
cancelHeightAnimator();
removeCallbacks(mPostCollapseRunnable);
removeCallbacks(mFlingCollapseRunnable);
}
protected void onClosingFinished() {
mBar.onClosingFinished();
}
protected void startUnlockHintAnimation() {
// We don't need to hint the user if an animation is already running or the user is changing

View File

@@ -3795,6 +3795,10 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
runPostCollapseRunnables();
}
public void onClosingFinished() {
runPostCollapseRunnables();
}
public void onUnlockHintStarted() {
mKeyguardIndicationController.showTransientIndication(R.string.keyguard_unlock);
}

View File

@@ -20,7 +20,6 @@ import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.util.EventLog;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
@@ -151,6 +150,12 @@ public class PhoneStatusBarView extends PanelBar {
mScrimController.onTrackingStarted();
}
@Override
public void onClosingFinished() {
super.onClosingFinished();
mBar.onClosingFinished();
}
@Override
public void onTrackingStopped(PanelView panel, boolean expand) {
super.onTrackingStopped(panel, expand);