Android进阶:九、自定义View之手写Loading动效,Android开发视频教程

本文详细介绍了如何在Android中创建自定义的Loading动效,包括计算圆弧半径、设置外圆和内圆的矩形、绘制弧形以及使用属性动画实现动态效果。通过实现ValueAnimator.AnimatorUpdateListener接口,监听动画变化并调整绘制角度,从而实现Loading动效的平滑转动。
摘要由CSDN通过智能技术生成

throw new IllegalArgumentException(“lineWidth值太大了”);
}
//外圆半径,因为我们的弧形是有宽度的,所以计算半径的时候应该把这部分减去,不然会有切割的效果
float outR = centerX - lineWidth;

//小圆半径
float inR = outR * 0.6f - lineWidth;
//设置弧形的距离上下左右的距离,也就是包围园的矩形。
mOuterCircleRectF.set(centerX - outR, centerY - outR, centerX + outR, centerY + outR);
mInnerCircleRectF.set(centerX - inR, centerY - inR, centerX + inR, centerY + inR);
//绘制外圆
canvas.drawArc(mOuterCircleRectF, mRotateAngle % 360, OUTER_CIRCLE_ANGLE, false, mStrokePaint);
//绘制内圆
canvas.drawArc(mInnerCircleRectF, 270 - mRotateAngle % 360, INTER_CIRCLE_ANGLE, false, mStrokePaint);

代码很简单,就像注释一样:

  • 获取整个loadView的宽高,然后计算loadview的中心
  • 利用中心计算外圆和内园的半径,因为圆弧的弧边有宽度,所以应该减去这部分宽度,不然上下左右会有被切割的效果。
  • 在Recf中设置以圆半径为边长的矩形
  • 在画布中以矩形的数据绘制圆弧即可,这里设置了角度,使圆形有缺角,只要不是360度的圆都是有缺角的。

绘制圆的过程应该放在onDraw方法中,这样我们可以不断的重绘,也可以获取view的真实的宽高

当然,我们还需设置一个画笔来画我们的圆

mStrokePaint = new Paint();
mStrokePaint.setStyle(Paint.Style.STROKE);
mStrokePaint.setStrokeWidth(lineWidth);
mStrokePaint.setColor(color);
mStrokePaint.setAntiAlias(true);
mStrokePaint.setStrokeCap(Paint.Cap.ROUND);
mStrokePaint.setStrokeJoin(Paint.Join.ROUND);

###二.设置属性动画
圆弧画好了,然后利用属性动画即可实现动画效果。这里采用的是ValueAnimator,值属性动画,我们可以设置一个值范围,然后让他在这个范围内变化。

mFloatValueAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
mFloatValu

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值