Android Progressbar: неопределенная анимация без изображений - PullRequest
1 голос
/ 05 апреля 2011

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

Может ли кто-нибудь рассказать о том, как этого добиться? У меня такое чувство, что я скучаю по чему-то довольно простому здесь. (Примеры всегда приветствуются!)

Спасибо!

1 Ответ

2 голосов
/ 05 апреля 2011

Это тривиальная задача в 3.0 - вы можете настроить ObjectAnimator для изменения «color» или «backgroundColor» объекта (View, ColorDrawable, независимо от того, что имеет свойство) между двумя значениями. См. Пример анимации ApiDemo / BouncingBalls.

Но при условии, что вы используете API до версии 3.0, есть несколько подходов. Во-первых, вы можете настроить свой собственный обработчик так, чтобы он отображал нужные вам события времени, а затем рассчитать новый цвет в каждой точке.

Возможно, немного проще (если не полностью интуитивно понятно) использовать AlphaAnimation. Все, что вы действительно хотите от анимации, это процентные значения, чтобы ничего не исчезать. Таким образом, вы не устанавливаете анимацию в представлении, а просто настраиваете ее на внутренний запуск со значением от 0 до 1, затем получите текущее анимированное значение в вашем методе onDraw () и установите соответствующий цвет соответствующим образом.

Например, это настроит и запустит альфа-анимацию для запуска на одну секунду:

Transformation transform = new Transformation();
AlphaAnimation anim = new AlphaAnimation(0f, 1f);
anim.setDuration(1000);
anim.start();

Затем в цикле рисования вы получаете текущее анимированное значение:

long time = getDrawingTime();
anim.getTransformation(time, transform);
float elapsedFraction = transform.getAlpha();

Получив значение elapsedFraction (значение от 0 до 1), вы можете рассчитать соответствующее промежуточное значение цвета.

Приведенный выше код может не совсем соответствовать вашей ситуации, но вы должны иметь возможность сделать что-то подобное, чтобы получить то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...