【发布时间】:2018-09-28 15:07:18
【问题描述】:
是否可以在 Android 工具栏上添加抽签动画?
我试过这个:
override fun onCreateOptionsMenu(menu : Menu, inflater : MenuInflater) {
inflater.inflate(R.menu.menu_program_fragment, menu)
val menuFavorite = menu.findItem(R.id.menuSubscribe)
val lottieDrawable = LottieDrawable()
LottieComposition.Factory.fromAssetFileName(activity, "favorite.json", {
composition ->
lottieDrawable.setComposition(composition)
lottieDrawable.loop(true)
lottieDrawable.playAnimation()
lottieDrawable.invalidateSelf()
menuFavorite.icon = lottieDrawable
})
}
这会导致IllegalStateException: You or your view must set a Drawable.Callback before setting the composition.
所以我添加了一个回调:
lottieDrawable.callback = object : Drawable.Callback {
override fun unscheduleDrawable(who: Drawable?, what: Runnable?) {
}
override fun invalidateDrawable(who: Drawable?) {
}
override fun scheduleDrawable(who: Drawable?, what: Runnable?, `when`: Long) {
}
}
这会阻止异常发生,但图标未绘制在工具栏中。
我该如何进行这项工作?
问题是否与
LottieDrawable的固有高度有关?Drawable.Callback应该做什么(如果有的话)?对
Fragment/Activity生命周期有什么影响吗?即我应该停止或清理破坏的东西吗?
【问题讨论】:
-
有一个更简单的解决方案,stackoverflow.com/a/64017611/12805923
标签: android kotlin android-toolbar lottie