Android(安卓)自定义View跟随页面切换小圆点
16lz
2022-03-09
自定义View圆形指示点跟随页面切换,一般应用于首页Splash启动 、广告Banner切换,或者步骤切换等场景,多配合ViewPager,RecycleView等控件的页面切换变化,代码实现如下:
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;import androidx.annotation.Nullable;/** * @author LHW * @date 2020/5/12. * Description:跟随页面切换圆形点 */public class CirclePageIndicatorView extends View { private Paint paint; private int circle_selected_radius = 7; //被选择的小球半径 private int circle_normal_radius = 5; //普通小球半径 private int count = 0; // 页数和小圆球的数量相等 private int choosePosition = 0;// 被选中的位置 private int gap = 20; // 两个小圆之间的中心距 private int circleSelectedColor = Color.WHITE;//默认选中颜色 private int circleUnSelectedColor = Color.GRAY;//默认未选中颜色 public CirclePageIndicatorView(Context context) { super(context); } public CirclePageIndicatorView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public void setCirlceGap(int gap) { this.gap = gap; } public int getCirlceGap() { return gap; } public void setCircleSelectedColor(int color) { circleSelectedColor = color; } public int getCircleSelectedColor() { return circleSelectedColor; } public void setCircleUnSelectedColor(int color) { circleUnSelectedColor = color; } public int getCircleUnSelectedColor() { return circleUnSelectedColor; } public void setPagerCount(int count) { this.count = count; this.invalidate(); } public void selectPosition(int pos) { choosePosition = pos; this.invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint = new Paint(); paint.setAntiAlias(true); int width = this.getWidth(); int height = this.getHeight(); // 居中显示时,小圆球的起始位置 int startPx = (width - (count - 1) * gap) / 2; for (int i = 0; i < count; i++) { if (choosePosition == i) { paint.setColor(circleSelectedColor); canvas.drawCircle(startPx + i * gap, height / 2, circle_selected_radius, paint); } else { paint.setColor(circleUnSelectedColor); canvas.drawCircle(startPx + i * gap, height / 2, circle_normal_radius, paint); } } }}
更多相关文章
- Android开发6:日志信息输出
- Android禁止横屏竖屏切换
- Android(安卓)Studio 安装ASM插件
- RaidoButton单选框
- listview更改选中时item背景色的两种方式
- Android的CheckBox控件的点击效果布局文件
- Android(安卓)中文 API (28) —— CheckedTextView
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像