我正在尝试使用 BottomNavigationView 和 Lottie 库来制作图标动画。我更喜欢使用 Lottie 而不是 VectorAndroidAnimation,因为我想要更复杂的动画。然而,当我点击第一个 BottomNavigationView 项时,它不会进行动画,但其他项目会。
(见下方GIF)
以下是我的代码:
class MainActivity : AppCompatActivity(), BottomNavigationView.OnNavigationItemSelectedListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navView: BottomNavigationView = findViewById(R.id.nav_view)
navView.menu.apply {
add(Menu.NONE, 0, Menu.NONE, R.string.title_home).icon = getLottieDrawable(
LottieAnimation.HOME,
navView
)
add(Menu.NONE, 1, Menu.NONE, R.string.title_dashboard).icon = getLottieDrawable(
LottieAnimation.CALENDAR,
navView
)
add(Menu.NONE, 2, Menu.NONE, R.string.title_notifications).icon = getLottieDrawable(
LottieAnimation.BELL,
navView
)
}
navView.setOnNavigationItemSelectedListener(this)
}
override fun onNavigationItemSelected(item: MenuItem): Boolean {
val icon = item.icon as? LottieDrawable
icon?.apply {
playAnimation()
}
return true
}
private fun getLottieDrawable(
animation: LottieAnimation,
view: BottomNavigationView
): LottieDrawable {
return LottieDrawable().apply {
val result = LottieCompositionFactory.fromAssetSync(
view.context.applicationContext, animation.value
)
callback = view
composition = result.value
}
}
}
enum class LottieAnimation(val value: String) {
HOME("home.json"),
CALENDAR("calendar.json"),
BELL("bell.json")
}
仅使用两个项目进行BottomNavigationView测试,第一个选项卡的动画效果生效。
(下方为两个项目的Gif图)
最后我使用了五个项目进行BottomNavigationView测试,在此测试中,当点击第一个和第二个项目时,它们不会有动画效果。只有选项卡中的最后三个项目才有动画效果。