Skip to content

Commit cd7258d

Browse files
committed
TriangularPagerIndicator支持reverse,yOffset
1 parent 0f15852 commit cd7258d

1 file changed

Lines changed: 32 additions & 4 deletions

File tree

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

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public class TriangularPagerIndicator extends View implements IPagerIndicator {
2626
private int mLineColor;
2727
private int mTriangleHeight;
2828
private int mTriangleWidth;
29+
private boolean mReverse;
30+
private float mYOffset;
2931

3032
private Path mPath = new Path();
3133
private Interpolator mStartInterpolator = new LinearInterpolator();
@@ -47,11 +49,21 @@ private void init(Context context) {
4749
@Override
4850
protected void onDraw(Canvas canvas) {
4951
mPaint.setColor(mLineColor);
50-
canvas.drawRect(0, getHeight() - mLineHeight, getWidth(), getHeight(), mPaint);
52+
if (mReverse) {
53+
canvas.drawRect(0, getHeight() - mYOffset - mTriangleHeight, getWidth(), getHeight() - mYOffset - mTriangleHeight + mLineHeight, mPaint);
54+
} else {
55+
canvas.drawRect(0, getHeight() - mLineHeight - mYOffset, getWidth(), getHeight() - mYOffset, mPaint);
56+
}
5157
mPath.reset();
52-
mPath.moveTo(mAnchorX - mTriangleWidth / 2, getHeight());
53-
mPath.lineTo(mAnchorX, getHeight() - mTriangleHeight);
54-
mPath.lineTo(mAnchorX + mTriangleWidth / 2, getHeight());
58+
if (mReverse) {
59+
mPath.moveTo(mAnchorX - mTriangleWidth / 2, getHeight() - mYOffset - mTriangleHeight);
60+
mPath.lineTo(mAnchorX, getHeight() - mYOffset);
61+
mPath.lineTo(mAnchorX + mTriangleWidth / 2, getHeight() - mYOffset - mTriangleHeight);
62+
} else {
63+
mPath.moveTo(mAnchorX - mTriangleWidth / 2, getHeight() - mYOffset);
64+
mPath.lineTo(mAnchorX, getHeight() - mTriangleHeight - mYOffset);
65+
mPath.lineTo(mAnchorX + mTriangleWidth / 2, getHeight() - mYOffset);
66+
}
5567
mPath.close();
5668
canvas.drawPath(mPath, mPaint);
5769
}
@@ -131,4 +143,20 @@ public void setStartInterpolator(Interpolator startInterpolator) {
131143
mStartInterpolator = new LinearInterpolator();
132144
}
133145
}
146+
147+
public boolean isReverse() {
148+
return mReverse;
149+
}
150+
151+
public void setReverse(boolean reverse) {
152+
mReverse = reverse;
153+
}
154+
155+
public float getYOffset() {
156+
return mYOffset;
157+
}
158+
159+
public void setYOffset(float yOffset) {
160+
mYOffset = yOffset;
161+
}
134162
}

0 commit comments

Comments
 (0)