Android 最简单仿IOS菊花加载样式,自定义Loading加载View

这是一个自定义的Android加载视图组件,允许开发者自定义半径大小、旋转视图数量和颜色。代码中提供了初始化、绘制以及开始和停止动画的方法,可以在布局XML中直接引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自定义菊花旋转加载view,可自定义半径大小,旋转view个数、颜色等,具体代码如下,可直接使用

public class LoadingView extends View {
    private RectF rectF;
    private Paint paint;
    private int radius =52; //半径
    private int count = 0;
    private boolean run = false; //动画控制

    public LoadingView(Context context) {
        super(context);
        init();
    }

    public LoadingView(Context context, @Nullable AttributeSet attrs) {

        super(context, attrs);

        init();

    }

    @Override

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        setMeasuredDimension(radius * 2, radius * 2);
    }

    private void init() {

        paint = new Paint();

        paint.setAntiAlias(true);

        paint.setColor(Color.WHITE);

        //可根据自己需求调整loading大小
        rectF = new RectF(radius - 8, 23, radius+2 , 40);

    }

    @Override

    protected void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        canvas.rotate(count * 45, radius, radius);

//设置loading加载旋转个数
        for (int i = 0; i < 8; i++) {

            paint.setAlpha(255 - i * 20);
            canvas.drawRoundRect(rectF, 20, 20, paint);
            canvas.rotate(45, radius, radius);
        }
        count++;
        if (count > 7) {
            count = 0;
        }
        if (run) {
            postInvalidateDelayed(200);
        }
    }

    public void start() {
        if (!run) {
            postInvalidateDelayed(200);
            run = true;
        }
    }

    public void stop() {
        run = false;
    }

}

Xml中调用如下

  <com。view.LoadingView
                  android:id="@+id/loading"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_centerVertical="true"
                  android:layout_marginLeft="50dp"
              />

样式如下图

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

志尊宝

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值