要实现自定义的圆形加载ProgressBar,可以继承ProgressBar类,并重写onDraw方法来绘制圆形加载效果。

首先,在res/drawable文件夹下创建一个xml文件,命名为circle_progress.xml,用于设置ProgressBar的样式:

<shape
    android:shape="ring"
    android:thickness="8dp"
    android:useLevel="true">
    <solid android:color="@color/colorAccent"/>
</shape>

在自定义的ProgressBar类中,重写onDraw方法来绘制圆形加载效果:

class CircleProgressBar(context: Context, attrs: AttributeSet) : ProgressBar(context, attrs) {
    private val paint: Paint = Paint()

    init {
        paint.color = Color.BLUE // 设置圆圈的颜色
        paint.style = Paint.Style.STROKE // 设置画笔的样式为描边
        paint.strokeWidth = 8f // 设置圆圈线条的大小
    }

    override fun onDraw(canvas: Canvas) {
        super.onDraw(canvas)

        val radius = width / 2f - paint.strokeWidth / 2f // 计算圆圈的半径
        val centerX = width / 2f // 圆心的x坐标
        val centerY = height / 2f // 圆心的y坐标

        canvas.drawCircle(centerX, centerY, radius, paint) // 绘制圆圈
    }
}

使用时,在布局文件中添加CircleProgressBar:

<com.example.CircleProgressBar
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:indeterminateDrawable="@drawable/circle_progress" />

这样就可以实现一个继承ProgressBar的自定义圆形加载View,并通过设置圆圈线条的大小来控制圆圈的宽度。

Android kotlin 自定义View 继承ProgressBar 圆形加载设置圆圈线条大小

原文地址: https://www.cveoy.top/t/topic/i3eh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录