Поворот изображения вокруг круга? - PullRequest
8 голосов
/ 26 июля 2011

Пожалуйста, посмотрите на снимок этого приложения:

enter image description here

Это банковское приложение. у него есть 6 кнопок вокруг логотипа банка. Вы можете поворачивать изображения, нажимая и удерживая их в одном из них, и перемещать палец в любом направлении (по часовой стрелке или против часовой стрелки). Так, например, я могу повернуть их, чтобы поместить изображение Currency Convertor вместо изображения Login.

В моем приложении тоже 6 изображений, я хочу повернуть их. Как я могу это сделать?

Обновление: кстати, это приложение для iPhone, но я думаю, что это не проблема iOS.

Ответы [ 2 ]

0 голосов
/ 10 января 2015

Предполагая, что вам не нужно менять элементы в «меню» (включить / отключить / упорядочить / видимость), вы, вероятно, можете «обмануть», имея растровое изображение с элементами, предварительно нарисованными по мере необходимости, и вращая растровое изображение.Изображение поверх, фон и т. Д. Может быть сделано путем «наслоения» изображений, поэтому ..

  1. у вас есть фоновое изображение (вероятно, «скос» вокруг циферблата), которое вы рисуете первым..
  2. Затем вы поворачиваете изображение набора, чтобы разместить пункт меню в нужном вам месте (прозрачный в любом месте, где вы хотите, чтобы фон был виден ...) и нарисуйте его поверх фона
  3. затем вы рисуете изображение указателя на циферблате (опять же, прозрачное везде, где вы хотите, чтобы циферблат и фон были видны).

    • конечный результат (в теории) будет очень похож на ваш скриншот.

на Android вы, вероятно, сделаете это на закадровом растровом изображении, чтобы пользователь не увидел создаваемое изображение, а затем нарисуйте законченное растровое изображение целиком.На iOS внеэкранная буферизация , в основном , автоматическая, поэтому вам, вероятно, не нужно об этом беспокоиться.

.. становится сложнее, если вы хотите изменить состояние элементов ..Я "построил бы" циферблат с изображениями элементов (как изображения сегментов) без поворота, затем повернул и нарисовал "встроенный" циферблат.

Я бы лично отображал тени на циферблате как другой слой (это было бышаг 2.5) с использованием частично прозрачного растрового изображения, затемняющего затененные области.Это сделает вращение более убедительным, поскольку тени будут оставаться в правильных местах.

0 голосов
/ 18 ноября 2013

Просто сделай это

RotateAnimation rAnim = new RotateAnimation(0, 359, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
rAnim.setDuration(1000);
image.startAnimation(rAnim);
...