diff --git a/library/src/main/java/com/panxw/android/imageindicator/AutoPlayManager.java b/library/src/main/java/com/panxw/android/imageindicator/AutoPlayManager.java index 2835cf0..b64829c 100644 --- a/library/src/main/java/com/panxw/android/imageindicator/AutoPlayManager.java +++ b/library/src/main/java/com/panxw/android/imageindicator/AutoPlayManager.java @@ -1,15 +1,23 @@ -package com.panxw.android.imageindicator; +package com.lt.hm.wovideo.widget.indicatorView; + +/** + * @author leonardo + * @create_date 16/2/23 + * @version 1.0 + */ import android.os.Handler; import android.os.Message; +import com.lt.hm.wovideo.utils.StringUtils; + import java.lang.ref.WeakReference; + /** * Auto BrocastManager for ImageIndicatorView - * + * * @author steven-pan - * */ public class AutoPlayManager { /** @@ -25,9 +33,19 @@ public class AutoPlayManager { */ private static final int DEFAULT_TIMES = -1; /** + + * turn right + */ + private final static int RIGHT = 0; + /** + * turn left + */ + private final static int LEFT = 1; + * handler ID */ private static final int LOOP_ID = 1; + /** * broadcast flag, play default */ @@ -40,14 +58,6 @@ public class AutoPlayManager { * play interval ms */ private long intevalMils = DEFAULT_INTEVALMILS; - /** - * turn right - */ - private final static int RIGHT = 0; - /** - * turn left - */ - private final static int LEFT = 1; /** * current direction */ @@ -78,11 +88,9 @@ public AutoPlayManager(ImageIndicatorView imageIndicatorView) { /** * set play start time and interval - * - * @param startMils - * start time ms(>2, default 8s) - * @param intevelMils - * time interval ms(default 3s) + * + * @param startMils start time ms(>2, default 8s) + * @param intevelMils time interval ms(default 3s) */ public void setBroadcastTimeIntevel(long startMils, long intevelMils) { this.startMils = startMils; @@ -91,9 +99,8 @@ public void setBroadcastTimeIntevel(long startMils, long intevelMils) { /** * set auto play flag - * - * @param flag - * on or off + * + * @param flag on or off */ public void setBroadcastEnable(boolean flag) { this.broadcastEnable = flag; @@ -101,9 +108,8 @@ public void setBroadcastEnable(boolean flag) { /** * set loop times - * - * @param times - * loop times + * + * @param times loop times */ public void setBroadCastTimes(int times) { this.broadcastTimes = times; @@ -127,7 +133,11 @@ public void stop() { } protected void handleMessage(Message msg) { + + if (broadcastEnable) { + if (!StringUtils.isNullOrEmpty(System.currentTimeMillis())&&System.currentTimeMillis() + - mImageIndicatorView.getRefreshTime() < 2 * 1000) {// ignore time interval less 2s if (System.currentTimeMillis() - mImageIndicatorView.getRefreshTime() < 2 * 1000) {// ignore loop less 2s broadcastHandler.sendEmptyMessageDelayed(LOOP_ID, this.intevalMils); @@ -144,7 +154,9 @@ protected void handleMessage(Message msg) { if (mImageIndicatorView.getCurrentIndex() == mImageIndicatorView .getTotalCount()-1) { timesCount++;// add loop play times - direction = LEFT; +// mImageIndicatorView.setCurrentItem(0); + mImageIndicatorView.getViewPager().setCurrentItem(0); + direction = RIGHT; } else { mImageIndicatorView .getViewPager() @@ -177,7 +189,7 @@ private static class BroadcastHandler extends Handler { private final WeakReference autoBrocastManagerRef; public BroadcastHandler(AutoPlayManager autoBrocastManager) { - this.autoBrocastManagerRef = new WeakReference( + this.autoBrocastManagerRef = new WeakReference<>( autoBrocastManager); } diff --git a/library/src/main/java/com/panxw/android/imageindicator/ImageIndicatorView.java b/library/src/main/java/com/panxw/android/imageindicator/ImageIndicatorView.java index 93e3d54..86b20c7 100644 --- a/library/src/main/java/com/panxw/android/imageindicator/ImageIndicatorView.java +++ b/library/src/main/java/com/panxw/android/imageindicator/ImageIndicatorView.java @@ -209,14 +209,19 @@ public void setupLayoutByDrawable(final Integer resArray[]) { /** * set Drawable list - * + * 消除 数据刷新 导致的 图片和 指示器重复的问题 * @param resList * Drawable list */ public void setupLayoutByDrawable(final List resList) { if (resList == null) throw new NullPointerException(); - + if (this.viewList.size()>0){ + this.viewList.clear(); + } + if (this.indicateLayout.getChildCount() > 0) { + this.indicateLayout.removeAllViews(); + } final int len = resList.size(); if (len > 0) { for (int index = 0; index < len; index++) { @@ -226,6 +231,32 @@ public void setupLayoutByDrawable(final List resList) { } } } + + /** + * 设置显示 网络图片,使用ImageLoader 加载网络图片,需要提前配置ImageLoader + * + */ + public void setupLayoutByURL(final List urllist) { + if (urllist == null) + throw new NullPointerException(); + final int len = urllist.size(); + if (this.viewList.size()>0){ + this.viewList.clear(); + } + if (this.indicateLayout.getChildCount() > 0) { + this.indicateLayout.removeAllViews(); + } + if (len > 0) { + for (int i = 0; i < len; i++) { + final ImageView pageItem = new ImageView(getContext()); + ImageLoader.getInstance().displayImage( + Constants.getRequestHost() + urllist.get(i), pageItem, + Utils.getOptions()); + addViewItem(pageItem); + } + } + } + /** * set image url list