我正在尝试通过反射获取存储在私有类“ AnimatedVectorDrawableState”中的“ Animator”实例,该私有类位于“ 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 / graphics / drawable / AnimatedVectorDrawable $ AnimatedVectorDrawableState中没有字段mAnimator;”
尽管我能够通过Android调试器看到“ mAnimators”属性。
如何从“ AnimatedVectorDrawable”获取“ mAnimators”数据?
这是调试数据的屏幕截图: debug_data