ObjectAnimator Android неправильно работает на реальном устройстве с API 19

Я делаю игру для Android и столкнулся с проблемой при работе над следующим обновлением. Игра настроена на работу с API 19 и выше. Я использую класс ObjectAnimator для анимации маленьких прыгающих стрелок, указывающих на кнопки в учебнике. Ничего фантастического.

Желтая стрелка — снимок экрана 1

Код:

 //Animate minestone clicker button arrow
            b1_animator = ObjectAnimator.ofFloat(button_minestone_pointer,"translationX",0,-100);
            b1_animator.setDuration(500);
            b1_animator.setRepeatMode(ValueAnimator.REVERSE);
            b1_animator.setRepeatCount(Animation.INFINITE);
            b1_animator.start();

Проблема в том, что анимация плавная на ВСЕХ виртуальных устройствах, предоставляемых Android Studio (API 19 - API 27), и на всех новых API, но на моем телефоне (Sharp SH-01G) под управлением Android 4.4 автоматическая прокрутка или эти стрелки просто прыгать из одного положения в другое, создавая размытое изображение. Пока не было возможности проверить это на другом устройстве до API21. Такое ощущение, что он не соблюдает ".setDuration();" кусочек. Свитки прыгают сразу в нужную позицию, но совсем не плавно.

Это код скроллера:

ObjectAnimator.ofInt(scroller_clickers, "scrollX",  800).setDuration(777).start();

Так вот вопрос, чем вызвано такое поведение? Вместо этого я также пытался использовать view.animate(), но это тоже не помогло. Подсказка в том, что когда я пытался найти "getAnimatedFraction();" значение, эмуляторы показывали разные дроби - плавный переход между 0,0 и 1. Мой телефон всегда показывал 0,0 или 1,0 в каком-то случайном порядке (вставил это в TextView и обновил с помощью Runnable). Назначение «AccelerateDecelerateInterpolator()» также не сработало. Я не хочу показывать публике неисправную игру :(

Любые идеи?


person Tatsurou    schedule 15.04.2018    source источник
comment
Вы получаете ObjectAnimator ошибки регистрации в logcat, когда ваше устройство kitkat подключено и на этом экране? Очевидно, что ObjectAnimator.ofInt находится между int (целыми числами), а не ofFloat — должен ли код быть ObjectAnimator.ofFloat(scroller_clickers, "scrollX", 800).setDuration(777).start();?   -  person Mark Keen    schedule 16.04.2018
comment
Только что проверил. Нет, я не получаю никаких ошибок, и переход на ofFloat тоже не помог. Игра работает нормально, если не считать этих анимаций. У меня есть еще одна анимированная монета вручную, которая помещается в ImageSwitcher и просто меняет картинки с высокой скоростью для создания анимации - это отлично работает. ObjectAnimator — нет.   -  person Tatsurou    schedule 16.04.2018


Ответы (1)


Исправлено. Оказывается, в моем телефоне анимация была отключена с 1.0x в настройках разработчика, что не понравилось классу ObjectAnimator. Теперь работает хорошо

person Tatsurou    schedule 19.04.2018
comment
Идеальный ответ. Это пропускало всю мою задержку и продолжительность - person Killer; 14.12.2018
comment
OMG, я действительно не знаю, как это сказать, дизайнер, отключивший анимацию, действительно гений. - person Snow Albert; 14.12.2020