Как переместить изображение вокруг квадрата - PullRequest
0 голосов
/ 27 мая 2019

У меня квадратное изображение (например, доска) с 10 полями с каждой стороны.Я пытаюсь передвигаться по этой доске, выходя на поля (например, жетон / пешка в настольной игре, один шаг - один поданный).После 10 шагов я должен изменить направление (вверх, влево, вправо, вниз).Я пытаюсь сделать любую анимацию, изменить положение изображения на каждой итерации в цикле, но это работает только один раз.

Пример:

for (int i = 0; i < range; ++i) {
            asX = token.getX();
            asY = token.getY();
            moveLength = 2.5f;
            if (1 case) {
                token.animate().x(asX - (2.5f * token.getWidth())).y(asY);
            } else if (2 case) {
                token.animate().x(asX - (2.5f * token.getWidth())).y(asY);
            } else if (3 case) {
                token.animate().x(asX - (2.5f * token.getWidth())).y(asY);
            } else if (4 case) {
              token.animate().x(asX - (2.5f * token.getWidth())).y(asY);
            }
            position++;
            token.invalidate();
        }
range is a number of moves,
1 case - move left,
2 case - move up,
3 case - move rigth,
4 case - move down

, например, когда range = 6и pos = 0 (токен в начальном поле), токен должен сдвинуться на 6 полей влево (причина pos <10 и range также <10), затем, когда range = 8 и pos = 6, токен должен переместиться на 4 поляслева, а затем на 4 поля вверх и т. д. Он перемещается только на одну область, а не на диапазон.Есть идеи? </p>

1 Ответ

0 голосов
/ 27 мая 2019

Использование класса ObjectAnimator имеет новые конструкторы, которые позволяют анимировать координаты

для более подробной информации прочитайте это

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
  Path path = new Path();
  path.arcTo(0f, 0f, 1000f, 1000f, 270f, -180f, true);
  ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.X, View.Y, path);
  animator.setDuration(2000);
  animator.start();
} else {
  // Create animator without using curved path
}
...