ExtendedFabSizeChanger.java

 1package eu.siacs.conversations.ui;
 2
 3import androidx.annotation.NonNull;
 4import androidx.recyclerview.widget.RecyclerView;
 5import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton;
 6
 7public class ExtendedFabSizeChanger extends RecyclerView.OnScrollListener {
 8
 9    private final ExtendedFloatingActionButton extendedFloatingActionButton;
10
11    private ExtendedFabSizeChanger(
12            final ExtendedFloatingActionButton extendedFloatingActionButton) {
13        this.extendedFloatingActionButton = extendedFloatingActionButton;
14    }
15
16    @Override
17    public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
18        super.onScrolled(recyclerView, dx, dy);
19        final var firstVisibleItem = RecyclerViews.findFirstVisibleItemPosition(recyclerView);
20        recyclerView.post(
21                () -> {
22                    if (firstVisibleItem > 0) {
23                        extendedFloatingActionButton.shrink();
24                    } else {
25                        extendedFloatingActionButton.extend();
26                    }
27                });
28    }
29
30    public static RecyclerView.OnScrollListener of(final ExtendedFloatingActionButton fab) {
31        return new ExtendedFabSizeChanger(fab);
32    }
33}