📜  如何从 android 的底部导航视图中删除弹跳动画 - Java (1)

📅  最后修改于: 2023-12-03 14:51:44.986000             🧑  作者: Mango

如何从android的底部导航视图中删除弹跳动画 - Java

当我们使用android的底部导航视图时,通常会看到选中的图标会有一个弹跳的动画效果。但是,有些情况下我们并不需要这种效果,这时候就需要将该动画效果去掉。下面介绍如何从android的底部导航视图中删除弹跳动画。

方案一:通过代码设置

我们可以通过设置选中图标的动画属性,将动画效果去掉。

BottomNavigationView navigationView = (BottomNavigationView) findViewById(R.id.navigation);
BottomNavigationMenuView menuView = (BottomNavigationMenuView) navigationView.getChildAt(0);
for (int i = 0; i < menuView.getChildCount(); i++) {
    BottomNavigationItemView menuItemView = (BottomNavigationItemView) menuView.getChildAt(i);
    // 将选中图标的动画属性去掉
    menuItemView.setShifting(false);
    // 选中图标的显示效果不变
    menuItemView.setChecked(menuItemView.getItemData().isChecked());
}
方案二:通过xml设置

我们可以通过xml属性设置选中图标的动画效果。

<com.google.android.material.bottomnavigation.BottomNavigationView
    ...
    app:labelVisibilityMode="unlabeled"
    app:itemIconTint="@drawable/bottom_nav_item_color_state"
    app:itemTextColor="@drawable/bottom_nav_item_color_state"
    app:menu="@menu/bottom_navigation_menu" />

此时,需要将app:labelVisibilityMode属性设置为"unlabeled",这样可以防止标签出现在底部导航视图中,从而使得底部导航视图只有图标。同时,我们还需要设置app:itemIconTint和app:itemTextColor的值为一个颜色选择器,该颜色选择器可以返回选中和未选中图标的颜色。在颜色选择器中,我们设置了消除了动画效果。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/bottom_nav_item_selected_color" android:state_checked="true" />
    <item android:color="@color/bottom_nav_item_unselected_color" />
</selector>

如上面的代码所示,通过消除动画效果,底部导航视图的图标在选中时不再弹跳。