aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenuRecyclerViewScrollListener.java
blob: e1af44842b2464325191f943eae1020b86820c39 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 * Copyright © 2017-2019 WireGuard LLC. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0
 */

package com.wireguard.android.widget.fab;

import androidx.recyclerview.widget.RecyclerView;

public class FloatingActionsMenuRecyclerViewScrollListener extends RecyclerView.OnScrollListener {
    private static final float SCALE_FACTOR = 1.5f;
    private final FloatingActionsMenu menu;

    public FloatingActionsMenuRecyclerViewScrollListener(final FloatingActionsMenu menu) {
        this.menu = menu;
    }

    private static float bound(final float min, final float proposal, final float max) {
        return Math.min(max, Math.max(min, proposal));
    }

    @Override
    public void onScrolled(final RecyclerView recyclerView, final int dx, final int dy) {
        super.onScrolled(recyclerView, dx, dy);
        menu.setScrollYTranslation(bound(0, menu.getScrollYTranslation() + dy * SCALE_FACTOR, menu.getMeasuredHeight() - menu.getTranslationY()));
    }
}