Я пытаюсь получить экземпляры "Animator", которые хранятся в закрытом классе "AnimatedVectorDrawableState", который находится в классе "AnimatedVectorDrawable", с помощью отражения.
Если бы все свойства были общедоступными, «Аниматоры» могли бы получить по такой строке:
AnimatedVectorDrawable().mAnimatedVectorState.mAnimators
Для получения Аниматоров я использую следующий метод:
private fun AnimatedVectorDrawable.getAnimators() {
val field = javaClass.getDeclaredField("mAnimatedVectorState")
field.isAccessible = true
val animatedVectorDrawableState = field.get(this)
val animatorsField = animatedVectorDrawableState.javaClass.getDeclaredField("mAnimators")
animatorsField.isAccessible = true
Log.d("custom", animatorsField.toString())
}
Но программа потерпела крах, когда я попытался получить "mAnimators" с сообщением:
"Нет полевых маниматоров в классе Landroid / графика / рисование / AnimatedVectorDrawable $ AnimatedVectorDrawableState;"
Несмотря на то, что я могу видеть свойство "mAnimators" через отладчик Android.
Как я могу получить данные "mAnimators" из "AnimatedVectorDrawable"?
Вот скриншот отладочных данных:
debug_data