我的目标是从右向左移动按钮之类的小部件。但它不应直线移动。它应遵循椭圆路径。
我的想法是根据给定的x坐标计算一条漂亮的椭圆曲线路径。 在这里可以看到我使用的公式:https://www.wolframalpha.com/input/?i=y%3D(pi+ * + x%5E2)+%2F-2 +%2B + 5。我稍微改变了偏移值。 我将其实现为:
Point computeY(int x){
int y;
y=(int)(Math.PI * x * x) /-2 + 5;
Point result = new Point(x, y);
return result;
}
x值全部存储在一个数组中
int[] array = {1088,878,544,165,0};
因此,以下循环获取每个x值,并将其传递给上面的函数,该函数计算y值并返回整个Point对象。该对象被添加到ArrayList:
List<Point> list = new ArrayList<Point>();
for(int i=0; i<array.length; i++){
int xVal = array[i];
Point coordinate = computeY(xVal);
list.add(coordinate);
}
接下来,ObjectAnimator到位并完成其余部分:
Path pathTest = new Path();
pathTest.moveTo(list.get(0).x, list.get(0).y);
for (int i = 1; i < list.size(); i++) {
pathTest.lineTo(list.get(i).x, list.get(i).y);
}
ObjectAnimator animator = ObjectAnimator.ofFloat(tvLabel, View.X, View.Y, pathTest);
animator.setDuration(5000);
animator.start();
如您所见,该按钮消失(采用完全不同的路径),并显示在左上角。 我想要的是从中心的右边缘开始动画,然后步行到显示器的左边缘。
有更好的方法吗?
预先感谢