这里是a tutorial,如何使用带有滚动动画的FAB按钮。
基本上:
- 使用 v22.2.1 支持 v4 库,有一个
show() 和 hide() 方法可以执行浮动操作按钮的淡入和淡出动画
- 您必须将
ScrollView 和 FAB 放在 CoordinatorLayout 中。
- 将 FAB
layout_anchor 设置为 ScrollView's id
- 创建一个类并扩展
FloatingActionButton.Behavior 类并将其设置为布局xml 中FAB 的layout_behavior 属性
- 覆盖您的 Behavior 类
onStartNestedScroll 以检查是否垂直
- 覆盖您的 Behavior 类
onStopNestedScroll 以在向下滚动时调用子 (FAB) 参数 hide() 方法并延迟 Runnable 以在 2 秒后显示 FAB
布局如下:
<android.support.design.widget.CoordinatorLayout
... >
<ScrollView
android:id="@+id/myList"
...
/>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
app:layout_anchor="@id/myList"
app:layout_behavior="package.CustomScrollAwareBehavior"
...
/>
</android.support.design.widget.CoordinatorLayout>
我建议,在 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();
}
}
}