这是
a tutorial,如何使用带有滚动动画的FAB按钮.
基本上:
>使用v22.2.1支持v4库,有一个show()和hide()方法,用于执行浮动动作按钮的淡入和淡出动画
>您必须将ScrollView和FAB放在CoordinatorLayout中.
>将FAB layout_anchor设置为ScrollView的id
>创建一个类并扩展FloatingActionButton.Behavior类并将其设置为布局xml中的FAB的layout_behavior属性
>重写您的Behavior类onStartNestedScroll以检查是否为垂直
>覆盖您的Behavior类onStopNestedScroll以在downscroll上调用子级(FAB)参数hide()方法并postDelay一个Runnable以在2秒后显示FAB
布局如:
... >
android:id="@+id/myList"
...
/>
android:id="@+id/fab"
app:layout_anchor="@id/myList"
app:layout_behavior="package.CustomScrollAwareBehavior"
...
/>
我建议,还要在Behavior类中创建一个Handler来调用FAB的show()方法.
行为类(未测试):
public class CustomScrollAwareBehavior extends FloatingActionButton.Behavior{
private Handler handler = new Handler();
private FloatingActionButton fab;
public CustomScrollAwareBehavior(Context context, AttributeSet attrs) {
super();
}
@Override
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout,
FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
fab = child;
return nestedScrollAxes == ViewCompat.SCROLL_AXIS_VERTICAL ||
super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target,
nestedScrollAxes);
}
Runnable showRunnable = new Runnable() {
@Override
public void run() {
fab.show();
}
};
@Override
public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child,
View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed,
dyUnconsumed);
if (dyConsumed > 0 && child.getVisibility() == View.VISIBLE) {
handler.removeCallbacks(showRunnable);
handler.postDelayed(showRunnable,2000);
child.hide();
}
}
}