Java контролирует анимацию - как сделать их плавными и эффективными - PullRequest
1 голос
/ 08 июня 2010

Я программирую некоторые пользовательские элементы управления на Java и использую анимацию для переходов / затуханий / движений.

Способ, которым я делаю это, заключается в том, что я запускаю новый поток и делаю корректировки для переменных, и все настраивается с помощью метода paint().

Пример:

Теперь мой вопрос, скажем, например, что я реализовывал постепенное увеличение. Что я хотел бы сделать, это увеличить альфа-переменную на byte x //between 0-255 и нарисовать прямоугольник, где, например, alphaLevel += x (в псевдокоде ):

byte increment = 40;

for (byte i = 0; i < 255; i += increment)
{
    _parentClass.setAlphaLevel (i);
    _parentClass.repaint();
    Thread.sleep (10);    
}

_parentClass.setAlphaLevel (255);

То, что я хочу знать, это то, что является самым низким и каким самым высоким, я должен установить сон, чтобы анимация не выглядела прерывисто? Есть ли что-нибудь, что связано с частотой обновления целевого устройства, или что-то, что связано с человеческими глазами? Тот же вопрос снова с шагом. Есть ли сайт, который даст мне хорошие цифры, которые я могу скопировать.

Причина, по которой я спрашиваю, заключается в максимизации эффективности, поскольку она будет работать на устройстве с батарейным питанием, чтобы больше процессорного времени = меньше батареи. Что бы вы установили?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 июня 2010

Я бы лично предложил исследовать библиотеку анимации Trident , даже если вы используете ее в мобильном контексте (как видно из вопроса, который у вас есть), библиотека, похоже, составляет всего около 100 тыс. * 1003.*

Я не уверен, насколько хорошо она подходит к вашей ситуации, однако стоит попробовать.

И в случае с придирками ... тип данных byte в Java не без знака,так что его диапазон на самом деле от -128 до 127.

0 голосов
/ 08 июня 2010

Техника, которую вы ищете, называется «двойной буферизацией».

К сожалению, у меня нет времени, чтобы показать вам пример, но это то, что вам нужно изучить.

...