Я разрабатываю игру Android, которая анимирует прямоугольные представления, перемещающиеся горизонтально по всему экрану, используя view.animate (). translationx (...) . Анимация-это просто простого прямоугольника, движущегося влево в течение нескольких секунд, но она постоянно отстает от старых устройств (Samsung S7 и Old Tablets) и даже немного на более новых в режиме энергосбережения (Samsung S22 Ultra). < /P>
Разбитая версия: < /p>
< /p>
Версия: < /p>
< /p>
< /p>
< /p>
< /p>
< /p>
< /p>
< /p>
.View rectangle = ...; // A dynamically added View to a ConstraintLayout
rectangle.animate()
.setDuration(6000)
.translationX(-widthDisplay)
.setInterpolator(new LinearInterpolator())
.start();
< /code>
Я попробовал следующие оптимизации, но задержка сохраняется: < /p>
Использование view.setlayertype (view.layer_type_hardware, null) < /code>. < /li>
Сокращение количества одновременных анимационных представлений на только один. Другая тяжелая обработка в потоке пользовательского интерфейса. < /li>
Вместо этого используя объект -анаматор. Даже анимирование одного прямоугольника вызывает задержку на старых или дроссельных устройствах. Удаление setAlpha () или аналогичные вызовы не помогают.
Есть ли узкое место для производительности с view.animate () (viewpropertyanimator) на старых или дроссельных устройствах Android? И если так, есть ли более эффективная альтернатива или обходной путь для гладких, длительных анимаций перевода?for (int currentElement =0; currentElement
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-versions