在上一次https://www.cnblogs.com/webor2006/p/15488224.html已经学习上PathMeasure的基础了,这次则针对它进行一些实际效果的操练加以巩固。
实战:各种Loading效果:
Loading一:让箭头图片沿圆轨迹走
效果:
首先来实现在上篇开头所展示的这个效果:
如果对于上一篇的整体基础都了解之后,实现这样沿路径轨迹的效果那就很轻松了。
实现:
1、新建View:
这里还是基于上一次学习的工程往上继续垒代码:


2、 画园:
首先先准备一个中心的圆,待会它是就图片需要沿着运转的轨迹:
package com.cexo.pathmeasurestudy;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;
import androidx.annotation.Nullable;
/**
* Loading效果一:箭头图片沿圆路径旋转
*/
public class LoadingView extends View {
private int viewWidth;
private int viewHeight;
private Paint circlePaint;
public LoadingView(Context context) {
this(context, null);
}
public LoadingView(Context context, @Nullable AttributeSet attrs) {
this(context, attrs, -1);
}
public LoadingView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context);
}
private void init(Context context) {
circlePaint = new Paint();
circlePaint.setColor(Color.RED);
circlePaint.setStrokeWidth(5);
circlePaint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.WHITE);
canvas.translate(viewWidth / 2, viewHeight / 2);
Path path = new Path();
//Path.Direction.CW顺时针方向画圆
path.addCircle(0, 0, 200, Path.Direction.CCW);
canvas.drawPath(path, circlePaint);
}
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
viewWidth = w;
viewHeight = h;
}
}
比较简单,效果如下:

3、导入图片:
接下来则将需要沿这个圆轨迹移动的图片导进来:


4、将图片绘制在圆轨迹上:

此时的效果:

此时图片的绘制点则是在圆心上,不是咱们所预期的效果,应该是绘制在圆的轨迹上才行,此时很自然的就可以借助上一次学习的Path的测量,可以得到这俩值:

其中测量时的forceClosed参数的含义就不过多说明了,可以参考上一个基础篇,接下来的重点就是如何借助这个测量得到的pos和tan来将咱们的图片绘制在圆轨迹上了,这里可以将图片绘制的left和top改为它试试:

本文介绍了如何利用Android的PathMeasure类实现三种不同的Loading动画效果。首先,创建一个View,画出一个圆形路径,然后通过PathMeasure获取路径长度并动态改变图片位置和角度,实现箭头沿圆轨迹旋转。接着,利用getSegment()方法截取Path的部分路径,动态调整显示范围,创建第二个Loading效果。最后,结合getSegment()继续优化,实现第三个Loading动画。通过这些实践,加深了对PathMeasure的理解和应用。
最低0.47元/天 解锁文章

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



