2013-10-24 3 views
2

Я новичок в android и хочу немного поиграть с анимацией. Что я хочу сделать:Как анимировать круги в android

circles animation

Каждый крошечный круг должен быть интерактивными, и теперь только номер 2 может иметь место и ViceVersa 1 в. Я думаю, что я знаю, как рисовать круг и позиционировать крошечные круги вокруг него (я над ним работаю: P), но я не знаю, как реализовать анимацию. Есть идеи? Заранее спасибо!

ответ

1

Whoa ... Это обширная тема.

В зависимости от того, как вы намереваетесь нарисовать круги (я бы использовал обычай View), тогда вы, вероятно, захотите создать Animation какого-либо (возможно, AnimationTranslation).

Вы даже можете определить эти анимации в XML, скорее всего, в Animation Set, чтобы вы могли выполнять различные действия параллельно.

Это может быть отправной точкой :)

1

Создать переменную аниматора значение в качестве глобальной переменной

ValueAnimator mValueAnimator = new ValueAnimator(); 

затем добавить анимацию слушателя в valueanimator.

mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
       @Override 
       public void onAnimationUpdate(ValueAnimator animation) { 
        int angle = Integer.parseInt(animation.getAnimatedValue().toString()); 
       } 
      }); 

Всякий раз, когда вы хотите, чтобы повернуть рисунок или пользовательский вид, я предполагаю, что вы использовали углы, чтобы повернуть их.

Поэтому установите угол от угла и под углом к ​​аниматору.

mValueAnimator.setIntValues(fromAngle, toAngle); 

Запустите анимацию. Лучше проверить, что аниматор уже запущен.

if (mValueAnimator.isRunning()) { 
    mValueAnimator.end(); 
} 
mValueAnimator.start(); 

Теперь вы получите анимированный значение в onAnimationupdate (метода) AnimatorUpdateListener вы установите на значение мультипликатора.

В этом случае значение представляет собой анимированный угол. Используя угол, анимируйте вращение.

Никто не любит линейную анимацию. Поэтому попробуйте использовать Interpolators.

mValueAnimator.setInterpolator(new DecelerateInterpolator()); 

Вы можете использовать AccelerateInterpolator, OvershootInterpolator и так много.

Смежные вопросы