android 圆点指示器
时间: 2023-06-30 14:06:16 浏览: 63
Android 圆点指示器常用于 ViewPager、RecyclerView 等控件的指示,用于表示当前显示页面的位置。一般来说,可以通过自定义 View 或者使用第三方库来实现圆点指示器。
以下是使用自定义 View 实现圆点指示器的基本步骤:
1. 创建一个自定义 View 类,继承自 View。
2. 在自定义 View 的构造函数中初始化相关参数,如圆点的颜色、大小、间距等。
3. 重写 onMeasure 方法,设置自定义 View 的大小。
4. 重写 onDraw 方法,在画布上绘制圆点。
5. 在需要使用圆点指示器的地方,将自定义 View 添加到布局中即可。
以下是一个简单的圆点指示器示例代码:
```java
public class CircleIndicatorView extends View {
private static final int DEFAULT_COLOR = Color.WHITE;
private static final int DEFAULT_RADIUS = 10;
private static final int DEFAULT_SPACING = 20;
private int mCircleColor = DEFAULT_COLOR;
private int mCircleRadius = DEFAULT_RADIUS;
private int mCircleSpacing = DEFAULT_SPACING;
private int mCount = 0;
private int mCurrent = 0;
public CircleIndicatorView(Context context) {
super(context);
}
public CircleIndicatorView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CircleIndicatorView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setCount(int count) {
mCount = count;
invalidate();
}
public void setCurrent(int current) {
mCurrent = current;
invalidate();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = mCircleRadius * 2 * mCount + mCircleSpacing * (mCount - 1);
int height = mCircleRadius * 2;
setMeasuredDimension(width, height);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (int i = 0; i < mCount; i++) {
int cx = mCircleRadius + (mCircleRadius * 2 + mCircleSpacing) * i;
int cy = mCircleRadius;
canvas.drawCircle(cx, cy, mCircleRadius, mCircleColor);
if (i == mCurrent) {
canvas.drawCircle(cx, cy, mCircleRadius - 5, DEFAULT_COLOR);
}
}
}
}
```
在布局文件中引用该自定义 View:
```xml
<com.example.CircleIndicatorView
android:id="@+id/circle_indicator_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:circleColor="#FF0000"
app:circleRadius="10dp"
app:circleSpacing="20dp" />
```
注意,在自定义 View 中使用属性时需要在 attrs.xml 文件中定义对应的属性。
当然,还有很多第三方库可以实现圆点指示器,比如 ViewPagerIndicator、SmartTabLayout 等。