#android #xml #performance
#Android #xml #Производительность
Вопрос:
В настоящее время я использую следующее для перехода между 2 цветами фона:
background_Transition.xml
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<!-- TODO: HIGHER FPS, may require programmatic transitioning -->
<item android:drawable="@drawable/background_start" />
<item android:drawable="@drawable/background_end" />
</transition>
background_start.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/colorPrimary" />
</shape>
background_end.xml
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/background_end" />
</shape>
MainActivity.java
...
// fade from start to end
backgroundTransition.startTransition(DURATION);
// fade from current state to other state (used to fade from end to start)
backgroundTransition.reverseTransition(DURATION);
...
У меня есть 3 проблемы с этим решением.
- Как вы, возможно, заметили из
TODO:
комментария, частота кадров в секунду при этом переходе действительно низкая. - Он может переключаться только между 2 состояниями; теперь я хочу переключиться между третьим.
reverseTransition
МетодTransition
класса не работает идемпотентно, какstartTransition
это делает. Это меняет состояние перехода. Я не хочу иметь возможность идемпотентного перехода в любое из N состояний перехода.
Комментарии:
1. Вам нужно будет определить, что вы подразумеваете под 3 состояниями. Вы хотите, чтобы он переходил из A-> B-> C в одной анимации? Почему бы просто не заставить конец вашей первой анимации запустить вторую?
2. Нет. Я имею в виду один переход между 2 из n разных состояний. n выберите 2 различных возможных перехода
3. Вам нужно было бы сделать это в коде. Язык ресурсов анимации не допускает параметризованных анимаций
4. То есть мне придется вручную интерполировать цвета между ними, а затем установить интервал для настройки цвета фона?
5. Вероятно, вам могло бы сойти с рук написание класса анимации, который принимает параметры для начала и окончания при вызове метода, а затем запускает анимацию с этими значениями. Весь этот xml имел параллельную иерархию классов Java, которую вы можете подклассировать