aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/app/src/main/java/com/wireguard/android/widget/fab/FloatingActionsMenuRecyclerViewScrollListener.java
blob: 63f9d59cf90057f348a86df5e287d2600cc11b66 (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 © 2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0
 */

package com.wireguard.android.widget.fab;

import android.support.v7.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(float min, float proposal, 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()));
    }
}