在Android中逐步绘制路径

在Android中逐步绘制路径,android,android-canvas,Android,Android Canvas,我有一个自定义视图,我想在其周围绘制一条路径,如边界。 但是边界应该逐渐拉长,就像一条逐渐变大的蛇。 其目的是将其用作玩家在游戏中移动的计时器 我使用Path类和lineTo和addArc方法来绘制边界 timerPath = new Path(); timerPath.moveTo(getTranslationX() + width / 2, getTranslationY() + 3); timerPath.lineTo(getTranslationX() + width - 10, get

我有一个自定义视图,我想在其周围绘制一条路径,如边界。 但是边界应该逐渐拉长,就像一条逐渐变大的蛇。 其目的是将其用作玩家在游戏中移动的计时器

我使用Path类和lineTo和addArc方法来绘制边界

timerPath = new Path();
timerPath.moveTo(getTranslationX() + width / 2, getTranslationY() + 3);
timerPath.lineTo(getTranslationX() + width - 10, getTranslationY() + 3);
timerPath.addArc(new RectF(getTranslationX() + width - 20, getTranslationY() + 3, 
getTranslationX() + width - 3, getTranslationY() + 20), -90f, 90f);
...
...
timerPath.lineTo(getTranslationX() + width / 2, getTranslationY() + 3);

timerPaint = new Paint();
timerPaint.setColor(Color.GREEN);
timerPaint.setStyle(Paint.Style.STROKE);
timerPaint.setStrokeWidth(6);
我在onDraw中使用drawPath()方法:

canvas.drawPath(timerPath, timerPaint);
看起来不错

现在,我想知道是否有一种方法可以使用百分比(10%、11%、12%等)绘制部分路径。 然后我就可以给这幅画做动画了

如果这是不可能的,是否有另一种方法来设置边框绘制的动画?(用作计时器)

感谢您的帮助。

您可以使用该类来完成此操作。从路径创建一个
PathMeasure
对象,测量长度,然后使用
getSegment()
返回可绘制到画布的部分路径:

    float percentage = 50.0f; // initialize to your desired percentage

    PathMeasure measure = new PathMeasure(timerPath, false);
    float length = measure.getLength();
    Path partialPath = new Path();
    measure.getSegment(0.0f, (length * percentage) / 100.0f, partialPath, true);
    partialPath.rLineTo(0.0f, 0.0f); // workaround to display on hardware accelerated canvas as described in docs
    canvas.drawPath(partialPath, timerPaint);

正是我想要的。谢谢!!