如何解决RecyclerView 中的动画在调试模式下工作,但在使用 Proguard 的发布模式下无效
我正在尝试使用以下代码为回收视图中的项目设置动画:
my_recyclerview.viewTreeObserver.addOnPreDrawListener(
object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
viewTreeObserver.removeOnPreDrawListener(this)
for (i in 0 until childCount) {
val view: View = getChildAt(i)
val translationValue = if (layoutManager?.width != null) -layoutManager!!.width.toFloat() else 0f
view.translationX = translationValue
val translationAnimator: Animator = ObjectAnimator.ofFloat(
view,"translationX",translationValue,0f
)
translationAnimator.duration = 300
translationAnimator.startDelay = i * 50.toLong()
translationAnimator.start()
}
return true
}
})
它在调试模式下没有任何问题:项目从侧面一个一个地“滑入”。 但是,当我生成使用 proguard 的发布 apk 时,没有抛出任何错误,但动画根本不起作用。
编辑以澄清我确实在不使用 Proguard 的情况下尝试了发布版本(minifyEnabled false),并且动画效果很好,所以它必须是混淆。
我试图在 proguard 中包含一些“保留”规则以保留 ObjectAnimator,甚至是整个 android.animation 包,但要么我没有正确设置规则,要么我错过了其他东西。
例如,我试过:
-keep class android.animation.ObjectAnimator {*;}
以及
-keep class android.animation.ObjectAnimator.** {*;}
还有这个我在谷歌上找到的:
# keep setters in Views so that animations can still work.
# see http://proguard.sourceforge.net/manual/examples.html#beans
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
(上次编辑) 还尝试包含最严格的规则:
-keep class android.animation.ObjectAnimator { *; }
-keep class android.animation.ObjectAnimator {
void set*(***);
*** get*();
}
-keepclassmembers class android.animation.ObjectAnimator {
void set*(***);
*** get*();
}
-keep class android.widget.FrameLayout { *; }
-keep class android.widget.FrameLayout {
void set*(***);
*** get*();
}
-keepclassmembers class android.widget.FrameLayout {
void set*(***);
*** get*();
}
-keep class android.view.View { *; }
-keep class android.view.View {
void set*(***);
*** get*();
}
-keepclassmembers class android.view.View {
void set*(***);
*** get*();
}
此时我尝试了很多选择,我完全迷失了。
没有任何效果。任何帮助或指导将不胜感激
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。