am af2442e9: Merge "Fixed a bug that the panel was not closable in the locked shade" into lmp-mr1-dev

* commit 'af2442e9e53d1a77856e3151ba8b2cd08da81828':
  Fixed a bug that the panel was not closable in the locked shade
This commit is contained in:
Selim Cinek
2014-10-31 15:07:59 +00:00
committed by Android Git Automerger
3 changed files with 24 additions and 2 deletions

View File

@@ -536,6 +536,14 @@ public class NotificationPanelView extends PanelView implements
} }
} }
@Override
protected boolean isInContentBounds(float x, float y) {
float yTransformed = y - mNotificationStackScroller.getY();
float stackScrollerX = mNotificationStackScroller.getX();
return mNotificationStackScroller.isInContentBounds(yTransformed) && stackScrollerX < x
&& x < stackScrollerX + mNotificationStackScroller.getWidth();
}
private void resetDownStates(MotionEvent event) { private void resetDownStates(MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
mOnlyAffordanceInThisMotion = false; mOnlyAffordanceInThisMotion = false;

View File

@@ -70,6 +70,7 @@ public abstract class PanelView extends FrameLayout {
private boolean mOverExpandedBeforeFling; private boolean mOverExpandedBeforeFling;
private boolean mTouchAboveFalsingThreshold; private boolean mTouchAboveFalsingThreshold;
private int mUnlockFalsingThreshold; private int mUnlockFalsingThreshold;
private boolean mTouchStartedInEmptyArea;
private ValueAnimator mHeightAnimator; private ValueAnimator mHeightAnimator;
private ObjectAnimator mPeekAnimator; private ObjectAnimator mPeekAnimator;
@@ -409,6 +410,7 @@ public abstract class PanelView extends FrameLayout {
} }
mInitialTouchY = y; mInitialTouchY = y;
mInitialTouchX = x; mInitialTouchX = x;
mTouchStartedInEmptyArea = !isInContentBounds(x, y);
mTouchSlopExceeded = false; mTouchSlopExceeded = false;
mJustPeeked = false; mJustPeeked = false;
mPanelClosedOnDown = mExpandedHeight == 0.0f; mPanelClosedOnDown = mExpandedHeight == 0.0f;
@@ -432,7 +434,7 @@ public abstract class PanelView extends FrameLayout {
case MotionEvent.ACTION_MOVE: case MotionEvent.ACTION_MOVE:
final float h = y - mInitialTouchY; final float h = y - mInitialTouchY;
trackMovement(event); trackMovement(event);
if (scrolledToBottom) { if (scrolledToBottom || mTouchStartedInEmptyArea) {
if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) { if (h < -mTouchSlop && h < -Math.abs(x - mInitialTouchX)) {
cancelHeightAnimator(); cancelHeightAnimator();
mInitialOffsetOnTouch = mExpandedHeight; mInitialOffsetOnTouch = mExpandedHeight;
@@ -452,6 +454,11 @@ public abstract class PanelView extends FrameLayout {
return false; return false;
} }
/**
* @return Whether a pair of coordinates are inside the visible view content bounds.
*/
protected abstract boolean isInContentBounds(float x, float y);
private void cancelHeightAnimator() { private void cancelHeightAnimator() {
if (mHeightAnimator != null) { if (mHeightAnimator != null) {
mHeightAnimator.cancel(); mHeightAnimator.cancel();

View File

@@ -1918,7 +1918,14 @@ public class NotificationStackScrollLayout extends ViewGroup
* @return Whether the specified motion event is actually happening over the content. * @return Whether the specified motion event is actually happening over the content.
*/ */
private boolean isInContentBounds(MotionEvent event) { private boolean isInContentBounds(MotionEvent event) {
return event.getY() < getHeight() - getEmptyBottomMargin(); return isInContentBounds(event.getY());
}
/**
* @return Whether a y coordinate is inside the content.
*/
public boolean isInContentBounds(float y) {
return y < getHeight() - getEmptyBottomMargin();
} }
private void setIsBeingDragged(boolean isDragged) { private void setIsBeingDragged(boolean isDragged) {