自定义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);            }        }    }}

 

更多相关文章

  1. Android开发6:日志信息输出
  2. Android禁止横屏竖屏切换
  3. Android(安卓)Studio 安装ASM插件
  4. RaidoButton单选框
  5. listview更改选中时item背景色的两种方式
  6. Android的CheckBox控件的点击效果布局文件
  7. Android(安卓)中文 API (28) —— CheckedTextView
  8. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Fedora镜像
  9. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像

随机推荐

  1. 留言板功能css美化
  2. Netty分布式客户端接入流程初始化源码分
  3. 留言板实战
  4. 函数参数与返回值、模板字面量与模板函数
  5. 简单留言板练习
  6. 模态框案例
  7. 访问器属性原理和应用场景及dom元素的两
  8. java实现五子棋大战
  9. Netty客户端接入流程NioSocketChannel创
  10. java使用单向链表解决数据存储自定义排序