diff options
-rw-r--r-- | core/java/android/widget/StackView.java | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/core/java/android/widget/StackView.java b/core/java/android/widget/StackView.java index 64fb985..feb0972 100644 --- a/core/java/android/widget/StackView.java +++ b/core/java/android/widget/StackView.java @@ -102,6 +102,8 @@ public class StackView extends AdapterViewAnimator { private final Rect mTouchRect = new Rect(); + private static final int MIN_TIME_BETWEEN_INTERACTION_AND_AUTOADVANCE = 5000; + /** * These variables are all related to the current state of touch interaction * with the stack @@ -124,6 +126,7 @@ public class StackView extends AdapterViewAnimator { private boolean mClickFeedbackIsValid = false; private StackSlider mStackSlider; private boolean mFirstLayoutHappened = false; + private long mLastInteractionTime = 0; private int mStackMode; private int mFramePadding; private final Rect stackInvalidateRect = new Rect(); @@ -581,6 +584,7 @@ public class StackView extends AdapterViewAnimator { int pointerIndex = ev.findPointerIndex(mActivePointerId); float newY = ev.getY(pointerIndex); int deltaY = (int) (newY - mInitialY); + mLastInteractionTime = System.currentTimeMillis(); if (mVelocityTracker != null) { mVelocityTracker.computeCurrentVelocity(1000, mMaximumVelocity); @@ -895,6 +899,15 @@ public class StackView extends AdapterViewAnimator { onLayout(); } + @Override + public void advance() { + long timeSinceLastInteraction = System.currentTimeMillis() - mLastInteractionTime; + if (mSwipeGestureType == GESTURE_NONE && + timeSinceLastInteraction > MIN_TIME_BETWEEN_INTERACTION_AND_AUTOADVANCE) { + showNext(); + } + } + private void measureChildren() { final int count = getChildCount(); final int childWidth = getMeasuredWidth() - mPaddingLeft - mPaddingRight; |