Как реализовать анимацию перемещения Button по окружности?

Перерыл весь интернет и все виды анимаций, которые предлагаются при поиске этой темы, такие как ObjectAnimator, ValueAnimator и т.д. реализуют метод перемещения Translate по линейной траектории из точки с координатами (startX, startY) в точку (endX, endY). Мне же нужно анимированное перемещение кнопки в ту же точку, где она по факту и находится, но только по траектории, описывающей окружность. Пожалуйста, подскажите, какие есть варианты решения. Заранее очень признателен!


Ответы (2 шт):

Автор решения: Style-7

Предварительно устанавливаем новый центр вращения.

public void onClick( View v){
    v.setPivotY( -350 );
    ObjectAnimator oa = ObjectAnimator.ofFloat( v, "rotation", 0, 360);
    oa.setDuration( 3000 );
    oa.start();
}

введите сюда описание изображения

→ Ссылка
Автор решения: Дмитрий Каргин

Нашел решение, которое мне нужно. Здесь кнопка всегда остается горизонтальной.

public void animationCycle(View view, int radius, int centerX, int centerY){
    Path path_cycle = new Path();
    path_cycle.addArc(centerX - radius - view.getWidth(),
                      centerY - radius - view.getHeight(),
                      centerX + radius,
                      centerY + radius,
                      0, 360);

    ObjectAnimator animation = ObjectAnimator.ofFloat(view, View.X, View.Y, path_cycle);

    animation.setDuration(1000);
    animation.start();
}
→ Ссылка