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