Skip to content

Commit bf48d56

Browse files
committed
优化indicator继承结构,相互之间无依赖,不用可裁掉,增强了LineIndicator
1 parent c268fae commit bf48d56

File tree

7 files changed

+189
-270
lines changed

7 files changed

+189
-270
lines changed

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
2222
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
2323
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
24-
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.AbsorbPagerIndicator;
2524
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.BezierPagerIndicator;
2625
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.LinePagerIndicator;
2726
import net.lucode.hackware.magicindicator.buildins.commonnavigator.indicators.TriangularPagerIndicator;
@@ -91,7 +90,7 @@ protected void onCreate(Bundle savedInstanceState) {
9190
final CommonNavigator commonNavigator = new CommonNavigator(this);
9291
commonNavigator.setFollowTouch(false);
9392
commonNavigator.setRightPadding(UIUtil.dip2px(MainActivity.this, 50));
94-
commonNavigator.setLeftPadding(UIUtil.dip2px(MainActivity.this, 80));
93+
// commonNavigator.setLeftPadding(UIUtil.dip2px(MainActivity.this, 80));
9594
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
9695

9796
@Override
@@ -149,7 +148,7 @@ public void onClick(View v) {
149148
@Override
150149
public IPagerIndicator getIndicator(Context context) {
151150
LinePagerIndicator indicator = new LinePagerIndicator(context);
152-
indicator.setWrapContentMode(true);
151+
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
153152
List<String> colorList = new ArrayList<String>();
154153
colorList.add("#ff4a42");
155154
colorList.add("#fcde64");
@@ -309,6 +308,7 @@ public IPagerIndicator getIndicator(Context context) {
309308
LinePagerIndicator indicator = new LinePagerIndicator(context);
310309
indicator.setStartInterpolator(new AccelerateInterpolator());
311310
indicator.setEndInterpolator(new DecelerateInterpolator(1.6f));
311+
indicator.setYOffset(UIUtil.dip2px(context, 39));
312312
indicator.setLineHeight(UIUtil.dip2px(context, 1));
313313
List<String> colorList = new ArrayList<String>();
314314
colorList.add("#c683fe");
@@ -372,8 +372,13 @@ public void onClick(View v) {
372372

373373
@Override
374374
public IPagerIndicator getIndicator(Context context) {
375-
AbsorbPagerIndicator indicator = new AbsorbPagerIndicator(context);
375+
LinePagerIndicator indicator = new LinePagerIndicator(context);
376+
indicator.setMode(LinePagerIndicator.MODE_EXACTLY);
376377
indicator.setLineHeight(UIUtil.dip2px(context, 6));
378+
indicator.setLineWidth(UIUtil.dip2px(context, 10));
379+
indicator.setRoundRadius(UIUtil.dip2px(context, 3));
380+
indicator.setStartInterpolator(new AccelerateInterpolator());
381+
indicator.setEndInterpolator(new DecelerateInterpolator(2.0f));
377382
List<String> colorList = new ArrayList<String>();
378383
colorList.add("#ff4a42");
379384
colorList.add("#fcde64");

magicindicator/src/main/java/net/lucode/hackware/magicindicator/buildins/commonnavigator/indicators/AbsorbPagerIndicator.java

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

magicindicator/src/main/java/net/lucode/hackware/magicindicator/buildins/commonnavigator/indicators/BezierPagerIndicator.java

Lines changed: 49 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -46,54 +46,12 @@ public BezierPagerIndicator(Context context) {
4646
init(context);
4747
}
4848

49-
public void setStartInterpolator(Interpolator startInterpolator) {
50-
mStartInterpolator = startInterpolator;
51-
if (mStartInterpolator == null) {
52-
mStartInterpolator = new AccelerateInterpolator();
53-
}
54-
}
55-
56-
public void setEndInterpolator(Interpolator endInterpolator) {
57-
mEndInterpolator = endInterpolator;
58-
if (mEndInterpolator == null) {
59-
mEndInterpolator = new DecelerateInterpolator();
60-
}
61-
}
62-
6349
private void init(Context context) {
6450
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
6551
mPaint.setStyle(Paint.Style.FILL);
66-
setMaxCircleRadius(UIUtil.dip2px(context, 3.5));
67-
setMinCircleRadius(UIUtil.dip2px(context, 2));
68-
setYOffset(UIUtil.dip2px(context, 1.5));
69-
}
70-
71-
public float getMaxCircleRadius() {
72-
return mMaxCircleRadius;
73-
}
74-
75-
public void setMaxCircleRadius(float maxCircleRadius) {
76-
mMaxCircleRadius = maxCircleRadius;
77-
}
78-
79-
public float getMinCircleRadius() {
80-
return mMinCircleRadius;
81-
}
82-
83-
public void setMinCircleRadius(float minCircleRadius) {
84-
mMinCircleRadius = minCircleRadius;
85-
}
86-
87-
public float getYOffset() {
88-
return mYOffset;
89-
}
90-
91-
public void setYOffset(float yOffset) {
92-
mYOffset = yOffset;
93-
}
94-
95-
public void setColorList(List<String> colorList) {
96-
mColorList = colorList;
52+
mMaxCircleRadius = UIUtil.dip2px(context, 3.5);
53+
mMinCircleRadius = UIUtil.dip2px(context, 2);
54+
mYOffset = UIUtil.dip2px(context, 1.5);
9755
}
9856

9957
@Override
@@ -120,22 +78,6 @@ private void drawBezierCurve(Canvas canvas) {
12078
canvas.drawPath(mPath, mPaint);
12179
}
12280

123-
protected void setLeftCircleX(float leftCircleX) {
124-
mLeftCircleX = leftCircleX;
125-
}
126-
127-
protected void setLeftCircleRadius(float leftCircleRadius) {
128-
mLeftCircleRadius = leftCircleRadius;
129-
}
130-
131-
protected void setRightCircleRadius(float rightCircleRadius) {
132-
mRightCircleRadius = rightCircleRadius;
133-
}
134-
135-
protected void setRightCircleX(float rightCircleX) {
136-
mRightCircleX = rightCircleX;
137-
}
138-
13981
@Override
14082
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
14183
if (mPositionDataList == null || mPositionDataList.isEmpty()) {
@@ -159,17 +101,10 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
159101
float leftX = current.mLeft + (current.mRight - current.mLeft) / 2;
160102
float rightX = next.mLeft + (next.mRight - next.mLeft) / 2;
161103

162-
float rightCircleX = leftX + (rightX - leftX) * mEndInterpolator.getInterpolation(positionOffset);
163-
setRightCircleX(rightCircleX);
164-
165-
float LeftCircleX = leftX + (rightX - leftX) * mStartInterpolator.getInterpolation(positionOffset);
166-
setLeftCircleX(LeftCircleX);
167-
168-
float rightCircleRadius = mMinCircleRadius + (mMaxCircleRadius - mMinCircleRadius) * mStartInterpolator.getInterpolation(positionOffset);
169-
setRightCircleRadius(rightCircleRadius);
170-
171-
float leftCircleRadius = mMaxCircleRadius + (mMinCircleRadius - mMaxCircleRadius) * mEndInterpolator.getInterpolation(positionOffset);
172-
setLeftCircleRadius(leftCircleRadius);
104+
mLeftCircleX = leftX + (rightX - leftX) * mStartInterpolator.getInterpolation(positionOffset);
105+
mRightCircleX = leftX + (rightX - leftX) * mEndInterpolator.getInterpolation(positionOffset);
106+
mLeftCircleRadius = mMaxCircleRadius + (mMinCircleRadius - mMaxCircleRadius) * mEndInterpolator.getInterpolation(positionOffset);
107+
mRightCircleRadius = mMinCircleRadius + (mMaxCircleRadius - mMinCircleRadius) * mStartInterpolator.getInterpolation(positionOffset);
173108

174109
invalidate();
175110
}
@@ -186,4 +121,46 @@ public void onPageScrollStateChanged(int state) {
186121
public void onPositionDataProvide(List<PositionData> dataList) {
187122
mPositionDataList = dataList;
188123
}
124+
125+
public float getMaxCircleRadius() {
126+
return mMaxCircleRadius;
127+
}
128+
129+
public void setMaxCircleRadius(float maxCircleRadius) {
130+
mMaxCircleRadius = maxCircleRadius;
131+
}
132+
133+
public float getMinCircleRadius() {
134+
return mMinCircleRadius;
135+
}
136+
137+
public void setMinCircleRadius(float minCircleRadius) {
138+
mMinCircleRadius = minCircleRadius;
139+
}
140+
141+
public float getYOffset() {
142+
return mYOffset;
143+
}
144+
145+
public void setYOffset(float yOffset) {
146+
mYOffset = yOffset;
147+
}
148+
149+
public void setColorList(List<String> colorList) {
150+
mColorList = colorList;
151+
}
152+
153+
public void setStartInterpolator(Interpolator startInterpolator) {
154+
mStartInterpolator = startInterpolator;
155+
if (mStartInterpolator == null) {
156+
mStartInterpolator = new AccelerateInterpolator();
157+
}
158+
}
159+
160+
public void setEndInterpolator(Interpolator endInterpolator) {
161+
mEndInterpolator = endInterpolator;
162+
if (mEndInterpolator == null) {
163+
mEndInterpolator = new DecelerateInterpolator();
164+
}
165+
}
189166
}

0 commit comments

Comments
 (0)