From eb607a63a494f4007c6cb05ce757387f7e98089f Mon Sep 17 00:00:00 2001 From: Duncan Date: Tue, 19 Apr 2016 10:52:07 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E5=92=8C=E6=9A=82=E5=81=9C=E4=BD=8D=E7=BD=AE?= =?UTF-8?q?,=20=E5=8F=AA=E6=9C=89=E5=BD=93view=E8=A6=81=E7=8E=B0=E5=AE=9E?= =?UTF-8?q?=E5=9C=A8=E7=AA=97=E5=8F=A3=E6=97=B6=E6=89=8D=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?,=E5=BD=93view=E4=BB=8E=E7=AA=97=E5=8F=A3=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E4=B8=AD=E5=8F=96=E6=B6=88=E6=97=B6=E6=9A=82=E5=81=9C=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AutoScrollViewPager.java | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java b/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java index c7f81e8..5812614 100644 --- a/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java +++ b/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java @@ -63,6 +63,9 @@ public class AutoScrollViewPager extends ViewPager { /** scroll factor for swipe scroll animation, default is 1.0 **/ private double swipeScrollFactor = 1.0; + /** first scroll delay time */ + private long delayTimeInMills; + private Handler handler; private boolean isAutoScroll = false; private boolean isStopByTouch = false; @@ -91,7 +94,7 @@ private void init() { */ public void startAutoScroll() { isAutoScroll = true; - sendScrollMessage((long)(interval + scroller.getDuration() / autoScrollFactor * swipeScrollFactor)); + this.delayTimeInMills = (long)(interval + scroller.getDuration() / autoScrollFactor * swipeScrollFactor); } /** @@ -101,15 +104,38 @@ public void startAutoScroll() { */ public void startAutoScroll(int delayTimeInMills) { isAutoScroll = true; - sendScrollMessage(delayTimeInMills); + this.delayTimeInMills = delayTimeInMills; + } + + /** + * start scroll when view attached + */ + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + if(isAutoScroll){ + sendScrollMessage(delayTimeInMills); + } } + /** + * stop scroll when view detached + */ + @Override + protected void onDetachedFromWindow() { + stopAutoScroll(); + super.onDetachedFromWindow(); + } + + /** * stop auto scroll */ public void stopAutoScroll() { - isAutoScroll = false; - handler.removeMessages(SCROLL_WHAT); + if(isAutoScroll){ + isAutoScroll = false; + handler.removeMessages(SCROLL_WHAT); + } } /** From ecab323d55ac5a25e3feb5bafe1361e91c5a8968 Mon Sep 17 00:00:00 2001 From: Duncan Date: Fri, 22 Apr 2016 17:41:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?DetachedFromWindow=E6=97=B6,=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E7=8A=B6=E6=80=81BUG=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/view/autoscrollviewpager/AutoScrollViewPager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java b/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java index 5812614..3c576b0 100644 --- a/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java +++ b/src/cn/trinea/android/view/autoscrollviewpager/AutoScrollViewPager.java @@ -123,7 +123,9 @@ protected void onAttachedToWindow() { */ @Override protected void onDetachedFromWindow() { - stopAutoScroll(); + if(isAutoScroll){ + handler.removeMessages(SCROLL_WHAT); + } super.onDetachedFromWindow(); }