Skip to content

Commit fe5af99

Browse files
committed
增加ScrollState定义,消除框架对ViewPager的依赖
1 parent be152a7 commit fe5af99

5 files changed

Lines changed: 21 additions & 29 deletions

File tree

magicindicator/build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,11 @@ android {
1313
buildTypes {
1414
release {
1515
minifyEnabled false
16-
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
1716
}
1817
}
1918
}
2019

2120
dependencies {
2221
compile fileTree(dir: 'libs', include: ['*.jar'])
23-
testCompile 'junit:junit:4.12'
2422
compile 'com.android.support:appcompat-v7:23.4.0'
2523
}

magicindicator/proguard-rules.pro

Lines changed: 0 additions & 17 deletions
This file was deleted.

magicindicator/src/main/java/net/lucode/hackware/magicindicator/NavigatorHelper.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.lucode.hackware.magicindicator;
22

3-
import android.support.v4.view.ViewPager;
43
import android.util.SparseArray;
54
import android.util.SparseBooleanArray;
65

@@ -13,7 +12,7 @@
1312
public class NavigatorHelper {
1413
private int mCurrentIndex;
1514
private int mTotalCount;
16-
private int mScrollState = ViewPager.SCROLL_STATE_IDLE;
15+
private int mScrollState = ScrollState.SCROLL_STATE_IDLE;
1716

1817
// 转换后的回调
1918
private OnNavigatorScrollListener mNavigatorScrollListener;
@@ -38,7 +37,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
3837
float currentPositionOffsetSum = position + positionOffset;
3938
boolean leftToRight = currentPositionOffsetSum >= mLastPositionOffsetSum;
4039
int safePosition = getSafeIndex(position);
41-
if (mScrollState != ViewPager.SCROLL_STATE_IDLE) {
40+
if (mScrollState != ScrollState.SCROLL_STATE_IDLE) {
4241
int enterIndex;
4342
int leaveIndex;
4443
float enterPercent;
@@ -66,7 +65,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
6665
}
6766
if (enterIndex == leaveIndex) {
6867
if (enterIndex == mTotalCount - 1 && mLeavedPercents.get(enterIndex, 0.0f) != 0.0f && enterPercent == 0.0f && leftToRight) {
69-
boolean dispatchEnterEvent = mSkimOver || mScrollState == ViewPager.SCROLL_STATE_DRAGGING || enterIndex == mCurrentIndex;
68+
boolean dispatchEnterEvent = mSkimOver || mScrollState == ScrollState.SCROLL_STATE_DRAGGING || enterIndex == mCurrentIndex;
7069
if (dispatchEnterEvent) {
7170
mNavigatorScrollListener.onEnter(enterIndex, mTotalCount, 1.0f, true);
7271
mLeavedPercents.put(enterIndex, 0.0f);
@@ -75,22 +74,22 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
7574
return;
7675
}
7776
if (1.0f - mLeavedPercents.get(enterIndex, 0.0f) != enterPercent) {
78-
boolean dispatchEnterEvent = mSkimOver || mScrollState == ViewPager.SCROLL_STATE_DRAGGING || enterIndex == mCurrentIndex;
77+
boolean dispatchEnterEvent = mSkimOver || mScrollState == ScrollState.SCROLL_STATE_DRAGGING || enterIndex == mCurrentIndex;
7978
if (dispatchEnterEvent) {
8079
mNavigatorScrollListener.onEnter(enterIndex, mTotalCount, enterPercent, leftToRight);
8180
mLeavedPercents.put(enterIndex, 1.0f - enterPercent);
8281
}
8382
}
8483
if (mLeavedPercents.get(leaveIndex, 0.0f) != leavePercent) {
8584
if (leftToRight && leaveIndex == getCurrentIndex() && leavePercent == 0.0f) {
86-
boolean dispatchEnterEvent = mSkimOver || mScrollState == ViewPager.SCROLL_STATE_DRAGGING || leaveIndex == mCurrentIndex;
85+
boolean dispatchEnterEvent = mSkimOver || mScrollState == ScrollState.SCROLL_STATE_DRAGGING || leaveIndex == mCurrentIndex;
8786
if (dispatchEnterEvent) {
8887
mNavigatorScrollListener.onEnter(leaveIndex, mTotalCount, 1.0f, true);
8988
mLeavedPercents.put(leaveIndex, 0.0f);
9089
}
9190
} else {
9291
boolean dispatchLeaveEvent = mSkimOver
93-
|| mScrollState == ViewPager.SCROLL_STATE_DRAGGING
92+
|| mScrollState == ScrollState.SCROLL_STATE_DRAGGING
9493
|| leaveIndex == mLastIndex
9594
|| (leaveIndex == mCurrentIndex - 1 && mLeavedPercents.get(leaveIndex, 0.0f) != 1.0f)
9695
|| (leaveIndex == mCurrentIndex + 1 && mLeavedPercents.get(leaveIndex, 0.0f) != 1.0f);
@@ -192,7 +191,7 @@ public void clear() {
192191
mCurrentIndex = 0;
193192
mLastIndex = 0;
194193
mLastPositionOffsetSum = 0.0f;
195-
mScrollState = ViewPager.SCROLL_STATE_IDLE;
194+
mScrollState = ScrollState.SCROLL_STATE_IDLE;
196195
mDeselectedItems.clear();
197196
mLeavedPercents.clear();
198197
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.lucode.hackware.magicindicator;
2+
3+
/**
4+
* 自定义滚动状态,消除对ViewPager的依赖
5+
* Created by hackware on 2016/8/27.
6+
*/
7+
8+
public interface ScrollState {
9+
int SCROLL_STATE_IDLE = 0;
10+
int SCROLL_STATE_DRAGGING = 1;
11+
int SCROLL_STATE_SETTLING = 2;
12+
}

magicindicator/src/main/java/net/lucode/hackware/magicindicator/buildins/commonnavigator/CommonNavigator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import android.content.Context;
44
import android.database.DataSetObserver;
5-
import android.support.v4.view.ViewPager;
65
import android.view.LayoutInflater;
76
import android.view.View;
87
import android.view.ViewGroup;
@@ -12,6 +11,7 @@
1211

1312
import net.lucode.hackware.magicindicator.NavigatorHelper;
1413
import net.lucode.hackware.magicindicator.R;
14+
import net.lucode.hackware.magicindicator.ScrollState;
1515
import net.lucode.hackware.magicindicator.abs.IPagerNavigator;
1616
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
1717
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IMeasurablePagerTitleView;
@@ -169,7 +169,7 @@ protected void onLayout(boolean changed, int left, int top, int right, int botto
169169
if (mIndicator != null) {
170170
mIndicator.onPositionDataProvide(mPositionDataList);
171171
}
172-
if (mReselectWhenLayout && mNavigatorHelper.getScrollState() == ViewPager.SCROLL_STATE_IDLE) {
172+
if (mReselectWhenLayout && mNavigatorHelper.getScrollState() == ScrollState.SCROLL_STATE_IDLE) {
173173
onPageSelected(mNavigatorHelper.getCurrentIndex());
174174
onPageScrolled(mNavigatorHelper.getCurrentIndex(), 0.0f, 0);
175175
}

0 commit comments

Comments
 (0)