自定义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之自定义View实现随手势滑动的小圆球
  2. android平台上20个自由移动的小球
  3. Android中view的简单应用---随手指移动的小球
  4. 用Xamarin 实现园友的 :Android浮动小球与开机自启动
  5. SeekBar圆球显示问题
  6. c语言实现输入圆的半径计算圆的面积
  7. 【py交易】算法竞赛入门经典6.3.1 小球下落 python

随机推荐

  1. Android:Gradle 解析
  2. New Graphics Improvement in Android(安
  3. android process and thread
  4. android 笔记 --- Android各种访问权限Pe
  5. QCom Camera Development
  6. Android(安卓)Apk 反编译,Apk 修改以后再
  7. Android(安卓)- 支持不同的设备 - 支持不
  8. 【android内核分析-启动】Android(安卓)
  9. Android中Input型输入设备驱动原理分析(
  10. Android(安卓)AIDL 跨进程服务 Proxy/Stu