Java управляет анимацией - как сделать их плавными и эффективными
-
24-10-2019 - |
Вопрос
Я программирую некоторые пользовательские элементы управления в 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);
Что я хочу знать, так это то, что самое низкое, и каково самое высокое, на что я должен установить сон, чтобы анимация не выглядела изменчивой? Есть ли что -то, что есть с частотой обновления целевого устройства или чем -то еще с человеческими глазами? Тот же вопрос снова с шагом. Есть ли веб -сайт, который даст мне хорошие цифры, которые я могу скопировать.
Причина, по которой я спрашиваю, состоит в том, чтобы максимизировать эффективность, поскольку она будет запускать на устройстве с аккумулятором, так что больше времени ЦП = меньше аккумуляторов. На что бы вы это установили?
Спасибо.
Решение
Техника, которую вы ищете, называется «двойная буферизация».
Я с сожалением у меня нет времени, чтобы показать вам пример, но это то, что вам нужно изучить.
Другие советы
Я бы лично предложил расследовать Библиотека анимации Trident, даже если вы используете его в мобильном контексте (как кажется из того, что вы есть), библиотека, кажется, составляет всего около 100 тыс..
Я не уверен, насколько хорошо это подходит для вашей ситуации, однако стоит попробовать.
И в придирчивой точке ... byte
DataType в Java не подписан, поэтому его диапазон на самом деле составляет от -128 до 127.