我正在使用Android支持设计BottomNavigationView
进行底部标签导航。
<android.support.design.widget.BottomNavigationView
android:id="@+id/main_nav"
android:layout_width="match_parent"
android:layout_height="56dp"
app:labelVisibilityMode="unlabeled"
app:itemIconSize="40dp"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
app:itemBackground="@color/blue_active"
app:menu="@menu/nav_items">
</android.support.design.widget.BottomNavigationView>
我想做的是:
在按下ObjectAnimator
时以编程方式对选项卡(菜单)图标进行动画处理
这是菜单:
<menu xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/nav_home" android:icon="@drawable/ic_home" android:title="@string/nav_home" /> <item android:id="@+id/nav_games" android:icon="@drawable/games" android:title="@string/nav_games" /> <item android:id="@+id/nav_profile" android:icon="@drawable/profile" android:title="@string/nav_profile" /> </menu>
代码:
mMainNav.setOnNavigationItemSelectedListener { item -> when (item.itemId) { R.id.nav_home -> { //item.icon is drawable var myAnimation = ObjectAnimator.ofFloat(item.icon,"rotation",0f,360f) myAnimation.duration = 500 myAnimation.start() //nothing happens setFragment(HomeFragment) true }
没有这种动画就不会发生动画。
怎么了?我应该使用其他方式制作动画还是只是将其错误地使用了?
[我尝试使用可绘制的图标对imageview进行动画处理,然后将其设置为actionview,但这也不起作用。(会发生一些反应,但会产生一些无关紧要的怪异行为)
var drawable = applicationContext.getDrawable(R.drawable.ic_home) var someImageView = ImageView(this) someImageView.setImageDrawable(drawable) var myAnimation = ObjectAnimator.ofFloat(someImageView,"rotation",0f,100f) myAnimation.duration = 2000 myAnimation.start() item.actionView = someImageView
赏金链接已损坏,请检查以下内容:https://streamable.com/99pa8
我正在使用Android支持设计BottomNavigationView进行底部标签导航。
尝试一下:
mMainNav.setOnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.nav_home -> {
val anim = myAnim(view,targetHeight)
anim.duration = /*whatever you want*/
view.startAnimation(anim)
ObjectAnimator.ofFloat(item.icon,"rotation",0f,360f).apply{
duration = 500
start() //nothing happens
setFragment(HomeFragment)
}
}