Есть ли способ программно запустить AnimatedVectorDrawable
с определенным смещением?
Контекст:
Я разрабатываю для API 19 и выше, поэтому Я использую Android Jetpack. У меня есть собственный View
с анимируемым «индикатором» (<selector>
с векторными изображениями).
Сейчас я запускаю анимацию следующим образом:
ImageView indicator = findViewById(R.id.indicator);
indicatorDrawable = indicator.getDrawable().getCurrent();
if(indicatorDrawable instanceof Animatable) {
((Animatable) indicatorDrawable).start();
}
И это аниматор, связанный с моим "индикатором" в xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
android:duration="500"
android:propertyName="fillAlpha"
android:valueFrom="0.5"
android:valueTo="0"
android:repeatMode="reverse"
android:repeatCount="infinite"/>
</set>
Все это работает нормально. Однако у меня есть несколько экземпляров моих пользовательских View
в Activity
, и мне нужно синхронизировать их «индикаторные» анимации (которые могут индивидуально включаться или выключаться в любое время).
Я не буду беспокоить вас подробностями, но в настоящее время у меня есть приемлемое решение, которое в основном использует поле static
миллисекунды в моем пользовательском View
. Это работает, но заставляет анимацию останавливаться на некоторое время, если они пытаются наверстать упущенное.
Я бы лучше сразу начал анимацию с определенным смещением, чтобы избежать этой остановки.
Я бы подумал, что я должен каким-то образом получить доступ к вышеупомянутому ObjectAnimator
, связанному с моим Animatable
, и установить его startOffset
, но я не могу понять, как.
Итак, могу ли я каким-то образом получить доступ к ObjectAnimator
и индивидуально установить его startOffset
для каждого индивидуального Animatable
программно?