gpt4 book ai didi

android - 在 Android 上动画绘制 Canvas 路径

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:09:46 25 4
gpt4 key购买 nike

我想为路径的绘制设置动画,即让它逐渐出现在屏幕上。我正在使用 Canvas ,到目前为止我最好的猜测是使用 ObjectAnimator 来处理动画。但是,我不知道如何在 onDraw() 方法中实际绘制相应的路径段。有没有一种方法可以做到这一点?我需要为此涉及路径效应吗?

编辑:使用 DashPathEffect 并在动画中设置其“开”和“关”间隔以覆盖我们要为该步骤绘制的路径部分似乎在这里有效,但它需要为动画的每一步分配一个新的 DashPathEffect。如果有更好的方法,我将保留这个问题。

最佳答案

回答我自己的问题,因为我想出了一个令人满意的方法。

诀窍是使用 ObjectAnimator 逐渐改变笔画的当前长度,并使用 DashPathEffect 来控制当前笔画的长度。 DashPathEffect 的 dashes 参数初始设置如下:

float[] dashes = { 0.0f, Float.MAX_VALUE };

第一个 float 是可见笔画的长度,第二个是不可见部分的长度。第二个长度被选择得非常高。因此,初始设置对应于完全不可见的笔划。

然后每次对象动画师更新笔划长度值时,都会创建一个新的 DashPathEffect,其中包含新的可见部分并将其设置为 Painter 对象,并且 View 会失效:

dashes[0] = newValue;
mPaint.setPathEffect(new DashPathEffect(dashes, 0));
invalidate();

最后,onDraw()方法使用这个painter来绘制路径,它只会包含我们想要的部分:

canvas.drawPath(path, mPaint);

我看到的唯一缺点是我们必须在每个动画步骤创建一个新的 DashPathEffect(因为它们不能重复使用),但总体而言这是令人满意的 - 动画既漂亮又流畅。

关于android - 在 Android 上动画绘制 Canvas 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12769431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com