Merge "Fixed a bug that the panel was not closable in the locked shade" into lmp-mr1-dev
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user