Android 绘制动画(波浪动画/轨迹动画/PathMeasure)
本文由 Luzhuo 编写,转发请保留该信息.
原文: https://blog.csdn.net/rozol/article/details/79730582
绘制动画, 由Android的绘画功能 + 属性动画 组成的一种动画
主要方法
valueAnimator.addUpdateListener(AnimatorUpdateListener)// 监听动画数值更新估值器
ValueAnimator.ofObject(new TypeEvaluator<PointF>() { @Override public PointF evaluate(float fraction, PointF startValue, PointF endValue) { // fraction(时间因子[0,1]), startValue(开始值), endValue(结束值) return null; // 返回计算结果值 } });
波浪动画
原理: 通过动画计算的数值, 不断将波浪右移.

代码
protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPath.reset(); mPath.moveTo(-waveLength + offset, centerY); // 绘制2个贝塞尔曲线 for (int i = 0; i < waveCount; i++){ mPath.quadTo( - waveLength * 3 / 4 + i * waveLength + offset, centerY + 60, - waveLength / 2 + i * waveLength + offset, centerY); mPath.quadTo( - waveLength / 4 + i * waveLength + offset, centerY - 60, i * waveLength + offset, centerY); } // 封闭波浪 mPath.lineTo(screenWidth, screenHeight); mPath.lineTo(0, screenHeight); mPath.close(); canvas.drawPath(mPath, mPaintBezier); } public void onClick(View v) { // 设置属性动画 valueAnimator = valueAnimator.ofInt(0, waveLength); valueAnimator.setDuration(1000); valueAnimator.setRepeatCount(ValueAnimator.INFINITE); valueAnimator.setInterpolator(new LinearInterpolator()); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(Valu

本文介绍了Android中的绘制动画,包括波浪动画和轨迹动画的实现原理及代码示例。波浪动画通过动画数值更新不断移动波浪图形;轨迹动画则根据估值器计算坐标绘制小球。此外,还详细讲解了PathMeasure类的基本使用,以缓冲圆圈为例,展示了如何对Path进行截取和重绘。
2666

被折叠的 条评论
为什么被折叠?



