直接上代码:
1.引用
<
android.support.design.widget.CoordinatorLayout
android:layout_width
=
"match_parent"
android:layout_height
=
"match_parent"
>
<
include
layout
=
"@layout/toolbar"
/>
<
include
layout
=
"@layout/container"
/>
<
android.support.design.widget.BottomNavigationView
android:id
=
"@+id/bottom_navigation"
style
=
"@style/Widget.Design.BottomNavigationView"
android:layout_width
=
"match_parent"
android:layout_height
=
"wrap_content"
android:layout_alignParentBottom
=
"true"
android:layout_gravity
=
"bottom"
android:background
=
"@color/viewBackground"
app:elevation
=
"16dp"
app:itemIconTint
=
"@drawable/nav_item_color_state"
app:itemTextColor
=
"@drawable/nav_item_color_state"
app:layout_behavior
=
"com.idengyun.widget.BottomNavigationBehavior"
app:menu
=
"@menu/bottom_navigation_main"
/>
2.关键类 public class BottomNavigationBehavior extends CoordinatorLayout.Behavior<View> { private ObjectAnimator outAnimator, inAnimator; public BottomNavigationBehavior(Context context, AttributeSet attrs) { super(context, attrs); } // 垂直滑动 @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, View child, View directTargetChild, View target, int nestedScrollAxes) { return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL; } @Override public void onNestedPreScroll(CoordinatorLayout coordinatorLayout, View child, View target, int dx, int dy, int[] consumed) { if (dy > 0) {// 上滑隐藏 if (outAnimator == null) { outAnimator = ObjectAnimator.ofFloat(child, "translationY", 0, child.getHeight()); outAnimator.setDuration(200); } if (!outAnimator.isRunning() && child.getTranslationY() <= 0) { outAnimator.start(); } } else if (dy < 0) {// 下滑显示 if (inAnimator == null) { inAnimator = ObjectAnimator.ofFloat(child, "translationY", child.getHeight(), 0); inAnimator.setDuration(200); } if (!inAnimator.isRunning() && child.getTranslationY() >= child.getHeight()) { inAnimator.start(); } } } }