summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/widget/StackView.java13
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;