Skip to content

Commit 13c85ed

Browse files
committed
use list to manage LoopViewPager OnPageChangeListener.
1 parent 7c22b68 commit 13c85ed

File tree

4 files changed

+70
-9
lines changed

4 files changed

+70
-9
lines changed

CHNAGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,7 @@ Version 1.1.4 *(2015-09-22)*
1616
----------------------------
1717
* fix bug:abstract method onCreateIndicator return null lead to crash.
1818

19+
Version 1.1.6 *(2015-09-22)*
20+
----------------------------
21+
* use list to manage LoopViewPager OnPageChangeListener.
22+

FlycoBanner_Lib/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apply plugin: 'com.android.library'
33
//apply plugin: 'com.jfrog.bintray'
44

55
// 这个version是区分library版本的,因此当我们需要更新library时记得修改这个version
6-
version = "1.1.4"
6+
version = "1.1.6"
77
android {
88
compileSdkVersion 22
99
buildToolsVersion "22.0.1"

FlycoBanner_Lib/src/main/java/com/flyco/banner/widget/LoopViewPager/LoopViewPager.java

Lines changed: 64 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,17 @@
55
import android.support.v4.view.ViewPager;
66
import android.util.AttributeSet;
77

8+
import java.util.ArrayList;
9+
import java.util.List;
10+
811
public class LoopViewPager extends ViewPager {
912

1013
private static final boolean DEFAULT_BOUNDARY_CASHING = false;
1114

12-
OnPageChangeListener mOuterPageChangeListener;
15+
// OnPageChangeListener mOuterPageChangeListener;
1316
private LoopPagerAdapterWrapper mAdapter;
1417
private boolean mBoundaryCaching = DEFAULT_BOUNDARY_CASHING;
18+
private List<OnPageChangeListener> mOnPageChangeListeners;
1519

1620
/**
1721
* helper function which may be used when implementing FragmentPagerAdapter
@@ -80,7 +84,24 @@ public void setOnPageChangeListener(OnPageChangeListener listener) {
8084

8185
@Override
8286
public void addOnPageChangeListener(OnPageChangeListener listener) {
83-
mOuterPageChangeListener = listener;
87+
if (mOnPageChangeListeners == null) {
88+
mOnPageChangeListeners = new ArrayList<>();
89+
}
90+
mOnPageChangeListeners.add(listener);
91+
}
92+
93+
@Override
94+
public void removeOnPageChangeListener(OnPageChangeListener listener) {
95+
if (mOnPageChangeListeners != null) {
96+
mOnPageChangeListeners.remove(listener);
97+
}
98+
}
99+
100+
@Override
101+
public void clearOnPageChangeListeners() {
102+
if (mOnPageChangeListeners != null) {
103+
mOnPageChangeListeners.clear();
104+
}
84105
}
85106

86107
public LoopViewPager(Context context) {
@@ -110,8 +131,17 @@ public void onPageSelected(int position) {
110131
int realPosition = mAdapter.toRealPosition(position);
111132
if (mPreviousPosition != realPosition) {
112133
mPreviousPosition = realPosition;
113-
if (mOuterPageChangeListener != null) {
114-
mOuterPageChangeListener.onPageSelected(realPosition);
134+
// if (mOuterPageChangeListener != null) {
135+
// mOuterPageChangeListener.onPageSelected(realPosition);
136+
// }
137+
138+
if (mOnPageChangeListeners != null) {
139+
for (int i = 0; i < mOnPageChangeListeners.size(); i++) {
140+
OnPageChangeListener listener = mOnPageChangeListeners.get(i);
141+
if (listener != null) {
142+
listener.onPageSelected(realPosition);
143+
}
144+
}
115145
}
116146
}
117147
}
@@ -128,6 +158,24 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
128158
}
129159

130160
mPreviousOffset = positionOffset;
161+
162+
if (mOnPageChangeListeners != null) {
163+
for (int i = 0; i < mOnPageChangeListeners.size(); i++) {
164+
OnPageChangeListener listener = mOnPageChangeListeners.get(i);
165+
if (listener != null) {
166+
if (realPosition != mAdapter.getRealCount() - 1) {
167+
listener.onPageScrolled(realPosition, positionOffset, positionOffsetPixels);
168+
} else {
169+
if (positionOffset > .5) {
170+
listener.onPageScrolled(0, 0, 0);
171+
} else {
172+
listener.onPageScrolled(realPosition, 0, 0);
173+
}
174+
}
175+
}
176+
}
177+
}
178+
/*
131179
if (mOuterPageChangeListener != null) {
132180
if (realPosition != mAdapter.getRealCount() - 1) {
133181
mOuterPageChangeListener.onPageScrolled(realPosition, positionOffset, positionOffsetPixels);
@@ -138,7 +186,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
138186
mOuterPageChangeListener.onPageScrolled(realPosition, 0, 0);
139187
}
140188
}
141-
}
189+
}*/
142190
}
143191

144192
@Override
@@ -150,8 +198,17 @@ public void onPageScrollStateChanged(int state) {
150198
setCurrentItem(realPosition, false);
151199
}
152200
}
153-
if (mOuterPageChangeListener != null) {
154-
mOuterPageChangeListener.onPageScrollStateChanged(state);
201+
// if (mOuterPageChangeListener != null) {
202+
// mOuterPageChangeListener.onPageScrollStateChanged(state);
203+
// }
204+
205+
if (mOnPageChangeListeners != null) {
206+
for (int i = 0; i < mOnPageChangeListeners.size(); i++) {
207+
OnPageChangeListener listener = mOnPageChangeListeners.get(i);
208+
if (listener != null) {
209+
listener.onPageScrollStateChanged(state);
210+
}
211+
}
155212
}
156213
}
157214
};

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ So I decide to code a libray with features below:
2929
dependencies{
3030
compile 'com.android.support:support-v4:22.2.1'
3131
compile 'com.nineoldandroids:library:2.4.0'
32-
compile 'com.flyco.banner:FlycoBanner_Lib:1.1.4@aar'
32+
compile 'com.flyco.banner:FlycoBanner_Lib:1.1.6@aar'
3333
}
3434
```
3535

0 commit comments

Comments
 (0)