Моя цель - переместить виджет как кнопку справа налево.Но он не должен двигаться по прямой линии.Он должен следовать по эллиптическому пути.
Моя идея состояла в том, чтобы вычислить хороший путь эллиптической кривой на основе заданных 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();
Как видите, кнопка разочаровывается (выбирает совершенно другой путь) и появляется в верхнем левом углу.Я хотел запустить анимацию с правого края центра и перейти к левому краю экрана.
Эскиз того, что я хотел:
Есть ли лучший способ сделать это?
Заранее спасибо,