Сначала позвольте мне объяснить свою цель. Я пытаюсь сделать Animation
, который изменяет свойства ArcShape
. Конструктор ArcShape's
принимает два поля: startAngle
и sweepAngle
. Я хочу анимировать sweepAngle
, чтобы он отображался на экране как непрерывно сокращающийся круг.
Вы можете представить эту анимацию, представив PacMan. Представьте, что его рот закрыт. Эта анимация была бы сродни тому, что он все больше открывал свою верхнюю челюсть, пока не было больше PacMan.
Теперь... У меня есть пара проблем с реализацией этого. Во-первых, после создания ArcShape
нет встроенных методов его изменения sweepAngle
. Это подводит меня к моему первому вопросу: есть ли способ переопределить ArcShape
и реализовать некоторый метод setSweepAngle
? Или мне нужно создать new ArcShape
для каждого sweepAngle
, который я хочу отобразить?
Теперь о втором вопросе... Предполагая, что я нашел решение первой проблемы, как мне создать этот Animation
? Это суть того, что у меня есть сейчас:
public class OpenPacman extends Animation {
public OpenPacman(float startAngle, float sweepAngle) {
mStartAngle = startAngle;
mSweepAngle = sweepAngle;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
/* This represents the current sweepAngle */
float currAngle = mStartAngle + ((mSweepAngle - mStartAngle) * interpolatedTime);
//Now I need to update the ArcShape sweepAngle to currAngle. But HOW?
}
}