Skip to content

Commit aaebda6

Browse files
committed
去掉委托机制,改用helper
1 parent 5e6ff55 commit aaebda6

File tree

4 files changed

+51
-61
lines changed

4 files changed

+51
-61
lines changed

README.md

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,19 @@ Simple steps, you can integrate **MagicIndicator**:
9797
magicIndicator.setNavigator(commonNavigator);
9898
```
9999

100-
5. bind **magicindicator** to ViewPager:
100+
5. work with ViewPager:
101101

102102
```
103-
SimpleViewPagerDelegate.with(magicIndicator, mViewPager).delegate();
103+
ViewPagerHelper.bind(magicIndicator, mViewPager);
104104
```
105105

106-
6. work with Fragment Container(no ViewPager, switch Pages by hand):
106+
**or**
107+
108+
work with Fragment Container(switch Fragment by hide()、show()):
107109
```
108110
mFramentContainerHelper = new FragmentContainerHelper(magicIndicator);
109111
...
110-
mFragmentContainerHelper.handlePageSelected(pageIndex); // invoke when switch Fragment by hand
112+
mFragmentContainerHelper.handlePageSelected(pageIndex); // invoke when switch Fragment
111113
```
112114

113115
# Extend

app/src/main/java/net/lucode/hackware/magicindicatordemo/MainActivity.java

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import net.lucode.hackware.magicindicator.FragmentContainerHelper;
2020
import net.lucode.hackware.magicindicator.MagicIndicator;
21-
import net.lucode.hackware.magicindicator.SimpleViewPagerDelegate;
21+
import net.lucode.hackware.magicindicator.ViewPagerHelper;
2222
import net.lucode.hackware.magicindicator.buildins.UIUtil;
2323
import net.lucode.hackware.magicindicator.buildins.circlenavigator.CircleNavigator;
2424
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
@@ -137,7 +137,7 @@ public IPagerIndicator getIndicator(Context context) {
137137
}
138138
});
139139
magicIndicator.setNavigator(commonNavigator);
140-
SimpleViewPagerDelegate.with(magicIndicator, mViewPager).delegate();
140+
ViewPagerHelper.bind(magicIndicator, mViewPager);
141141

142142
// 当前页不定位到中间
143143
final MagicIndicator magicIndicator1 = (MagicIndicator) findViewById(R.id.magic_indicator1);
@@ -175,7 +175,7 @@ public IPagerIndicator getIndicator(Context context) {
175175
}
176176
});
177177
magicIndicator1.setNavigator(commonNavigator1);
178-
SimpleViewPagerDelegate.with(magicIndicator1, mViewPager).delegate();
178+
ViewPagerHelper.bind(magicIndicator1, mViewPager);
179179

180180
// 当前页始终定位到中间
181181
final MagicIndicator magicIndicator2 = (MagicIndicator) findViewById(R.id.magic_indicator2);
@@ -222,7 +222,7 @@ public IPagerIndicator getIndicator(Context context) {
222222
}
223223
});
224224
magicIndicator2.setNavigator(commonNavigator2);
225-
SimpleViewPagerDelegate.with(magicIndicator2, mViewPager).delegate();
225+
ViewPagerHelper.bind(magicIndicator2, mViewPager);
226226

227227
// 动态增加、删除小红点
228228
commonNavigator2.postDelayed(new Runnable() {
@@ -315,7 +315,7 @@ public float getTitleWeight(Context context, int index) {
315315
titleContainer.setDividerPadding(UIUtil.dip2px(this, 15));
316316
titleContainer.setDividerDrawable(getResources().getDrawable(R.drawable.simple_splitter));
317317

318-
// SimpleViewPagerDelegate.with(magicIndicator3, mViewPager).delegate();
318+
// ViewPagerHelper.bind(magicIndicator3, mViewPager);
319319
mFragmentContainerHelper = new FragmentContainerHelper(magicIndicator3);
320320

321321
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@@ -369,7 +369,7 @@ public IPagerIndicator getIndicator(Context context) {
369369
}
370370
});
371371
magicIndicator4.setNavigator(commonNavigator4);
372-
SimpleViewPagerDelegate.with(magicIndicator4, mViewPager).delegate();
372+
ViewPagerHelper.bind(magicIndicator4, mViewPager);
373373

374374
// 缩放 + 颜色渐变
375375
final MagicIndicator magicIndicator5 = (MagicIndicator) findViewById(R.id.magic_indicator5);
@@ -410,7 +410,7 @@ public IPagerIndicator getIndicator(Context context) {
410410
}
411411
});
412412
magicIndicator5.setNavigator(commonNavigator5);
413-
SimpleViewPagerDelegate.with(magicIndicator5, mViewPager).delegate();
413+
ViewPagerHelper.bind(magicIndicator5, mViewPager);
414414

415415
// 只有指示器,没有title
416416
final MagicIndicator magicIndicator6 = (MagicIndicator) findViewById(R.id.magic_indicator6);
@@ -436,7 +436,7 @@ public IPagerIndicator getIndicator(Context context) {
436436
}
437437
});
438438
magicIndicator6.setNavigator(commonNavigator6);
439-
SimpleViewPagerDelegate.with(magicIndicator6, mViewPager).delegate();
439+
ViewPagerHelper.bind(magicIndicator6, mViewPager);
440440

441441
// 带吸附效果
442442
final MagicIndicator magicIndicator7 = (MagicIndicator) findViewById(R.id.magic_indicator7);
@@ -477,7 +477,7 @@ public IPagerIndicator getIndicator(Context context) {
477477
}
478478
});
479479
magicIndicator7.setNavigator(commonNavigator7);
480-
SimpleViewPagerDelegate.with(magicIndicator7, mViewPager).delegate();
480+
ViewPagerHelper.bind(magicIndicator7, mViewPager);
481481

482482
// 贝塞尔曲线
483483
final MagicIndicator magicIndicator8 = (MagicIndicator) findViewById(R.id.magic_indicator8);
@@ -513,7 +513,7 @@ public IPagerIndicator getIndicator(Context context) {
513513
}
514514
});
515515
magicIndicator8.setNavigator(commonNavigator8);
516-
SimpleViewPagerDelegate.with(magicIndicator8, mViewPager).delegate();
516+
ViewPagerHelper.bind(magicIndicator8, mViewPager);
517517

518518
// 天天快报式
519519
final MagicIndicator magicIndicator9 = (MagicIndicator) findViewById(R.id.magic_indicator9);
@@ -548,7 +548,7 @@ public IPagerIndicator getIndicator(Context context) {
548548
}
549549
});
550550
magicIndicator9.setNavigator(commonNavigator9);
551-
SimpleViewPagerDelegate.with(magicIndicator9, mViewPager).delegate();
551+
ViewPagerHelper.bind(magicIndicator9, mViewPager);
552552

553553
// 小尖角式
554554
final MagicIndicator magicIndicator10 = (MagicIndicator) findViewById(R.id.magic_indicator10);
@@ -583,21 +583,21 @@ public IPagerIndicator getIndicator(Context context) {
583583
}
584584
});
585585
magicIndicator10.setNavigator(commonNavigator10);
586-
SimpleViewPagerDelegate.with(magicIndicator10, mViewPager).delegate();
586+
ViewPagerHelper.bind(magicIndicator10, mViewPager);
587587

588588
// 圆圈式
589589
final MagicIndicator magicIndicator11 = (MagicIndicator) findViewById(R.id.magic_indicator11);
590590
final CircleNavigator circleNavigator = new CircleNavigator(this);
591591
circleNavigator.setCircleCount(mDataList.size());
592592
circleNavigator.setCircleColor(Color.RED);
593593
magicIndicator11.setNavigator(circleNavigator);
594-
SimpleViewPagerDelegate.with(magicIndicator11, mViewPager).delegate();
594+
ViewPagerHelper.bind(magicIndicator11, mViewPager);
595595

596596
MagicIndicator magicIndicator13 = (MagicIndicator) findViewById(R.id.magic_indicator13);
597597
ScaleCircleNavigator scaleCircleNavigator = new ScaleCircleNavigator(this);
598598
scaleCircleNavigator.setCircleCount(mDataList.size());
599599
magicIndicator13.setNavigator(scaleCircleNavigator);
600-
SimpleViewPagerDelegate.with(magicIndicator13, mViewPager).delegate();
600+
ViewPagerHelper.bind(magicIndicator13, mViewPager);
601601

602602
// 通用式
603603
final MagicIndicator magicIndicator12 = (MagicIndicator) findViewById(R.id.magic_indicator12);
@@ -661,6 +661,6 @@ public IPagerIndicator getIndicator(Context context) {
661661
}
662662
});
663663
magicIndicator12.setNavigator(commonNavigator12);
664-
SimpleViewPagerDelegate.with(magicIndicator12, mViewPager).delegate();
664+
ViewPagerHelper.bind(magicIndicator12, mViewPager);
665665
}
666666
}

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

Lines changed: 0 additions & 42 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package net.lucode.hackware.magicindicator;
2+
3+
import android.support.v4.view.ViewPager;
4+
5+
/**
6+
* 简化和ViewPager绑定
7+
* Created by hackware on 2016/8/17.
8+
*/
9+
10+
public class ViewPagerHelper {
11+
public static void bind(final MagicIndicator magicIndicator, ViewPager viewPager) {
12+
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
13+
14+
@Override
15+
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
16+
magicIndicator.onPageScrolled(position, positionOffset, positionOffsetPixels);
17+
}
18+
19+
@Override
20+
public void onPageSelected(int position) {
21+
magicIndicator.onPageSelected(position);
22+
}
23+
24+
@Override
25+
public void onPageScrollStateChanged(int state) {
26+
magicIndicator.onPageScrollStateChanged(state);
27+
}
28+
});
29+
}
30+
}

0 commit comments

Comments
 (0)