我目前正在处理图形和路径,我可以成功地显示我想要的任何东西。
但是我不想直接在我的surfaceview上画一条线,我想在动画中逐步画出来。
到目前为止,我所做的是创建一条路径,然后使用pathmease沿着路径逐步检索坐标。这是我到目前为止所做的基本工作
PathMeasure pm = new PathMeasure(myPath, false);
float position = 0;
float end = pm.getLength();
float[] coord = {0,0,0,0,0,0,0,0,0};
while (position < end){
Matrix m = new Matrix();
// put the current path position coordinates into the matrix
pm.getMatrix(position, m, PathMeasure.POSITION_MATRIX_FLAG | PathMeasure.TANGENT_MATRIX_FLAG);
// put the matrix data into the coord array (coord[2] = x and coord[5] = y)
m.getValues(coord);
????
position += 1;
}
问号就是我被困的地方。我想逐步绘制路径,并在屏幕上看到它的动画。我在网上找不到太多关于它的信息,所以如果你已经遇到同样的情况,任何线索都将不胜感激。我想创建的最终效果就像一支铅笔自动绘制文本。
4条答案
按热度按时间jvidinwx1#
我刚刚解决了这个问题,我要做的是:
这个例子是对我所做的工作的改编(为了简化这个例子)。希望你能理解。因为我刚刚让这个函数工作,所以它缺少优化之类的东西。
希望能有所帮助;—)
tez616oj2#
这里有一个对我有用的替代方案
}
使用
o7jaxewo3#
您可以使用objectanimator类来回调类的某个方法,而不是创建for循环,只要您想绘制更多的路径。
然后,只需调用init()开始动画,如下所示(或者如果希望在视图膨胀后立即开始,请将init()调用放入构造函数中):
也可以在这里看到这个问题,还有这个例子,我的代码是基于这个例子的。
m0rkklqb4#
必须将此视图添加到布局中,将“高度”设置为1,“宽度”设置为与父视图匹配。线条将从左到右设置动画。后一行将置于第一行之上。