Search in sources :

Example 6 with EndlessOnScrollListener

use of com.keylesspalace.tusky.view.EndlessOnScrollListener in project Tusky by tuskyapp.

the class NotificationsFragment method onActivityCreated.

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    MainActivity activity = (MainActivity) getActivity();
    if (activity == null)
        throw new AssertionError("Activity is null");
    // MainActivity's layout is guaranteed to be inflated until onCreate returns.
    TabLayout layout = activity.findViewById(R.id.tab_layout);
    onTabSelectedListener = new TabLayout.OnTabSelectedListener() {

        @Override
        public void onTabSelected(TabLayout.Tab tab) {
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {
        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {
            jumpToTop();
        }
    };
    layout.addOnTabSelectedListener(onTabSelectedListener);
    /* This is delayed until onActivityCreated solely because MainActivity.composeButton isn't
         * guaranteed to be set until then.
         * Use a modified scroll listener that both loads more notificationsEnabled as it goes, and hides
         * the compose button on down-scroll. */
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
    preferences.registerOnSharedPreferenceChangeListener(this);
    hideFab = preferences.getBoolean("fabHide", false);
    scrollListener = new EndlessOnScrollListener(layoutManager) {

        @Override
        public void onScrolled(RecyclerView view, int dx, int dy) {
            super.onScrolled(view, dx, dy);
            ActionButtonActivity activity = (ActionButtonActivity) getActivity();
            FloatingActionButton composeButton = activity.getActionButton();
            if (composeButton != null) {
                if (hideFab) {
                    if (dy > 0 && composeButton.isShown()) {
                        // hides the button if we're scrolling down
                        composeButton.hide();
                    } else if (dy < 0 && !composeButton.isShown()) {
                        // shows it if we are scrolling up
                        composeButton.show();
                    }
                } else if (!composeButton.isShown()) {
                    composeButton.show();
                }
            }
        }

        @Override
        public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
            NotificationsFragment.this.onLoadMore();
        }
    };
    recyclerView.addOnScrollListener(scrollListener);
}
Also used : EndlessOnScrollListener(com.keylesspalace.tusky.view.EndlessOnScrollListener) SharedPreferences(android.content.SharedPreferences) TabLayout(android.support.design.widget.TabLayout) ActionButtonActivity(com.keylesspalace.tusky.interfaces.ActionButtonActivity) FloatingActionButton(android.support.design.widget.FloatingActionButton) RecyclerView(android.support.v7.widget.RecyclerView) MainActivity(com.keylesspalace.tusky.MainActivity)

Aggregations

EndlessOnScrollListener (com.keylesspalace.tusky.view.EndlessOnScrollListener)6 RecyclerView (android.support.v7.widget.RecyclerView)5 SharedPreferences (android.content.SharedPreferences)4 TabLayout (android.support.design.widget.TabLayout)4 FloatingActionButton (android.support.design.widget.FloatingActionButton)3 ActionButtonActivity (com.keylesspalace.tusky.interfaces.ActionButtonActivity)3 MainActivity (com.keylesspalace.tusky.MainActivity)2 Activity (android.app.Activity)1 RecyclerView (androidx.recyclerview.widget.RecyclerView)1 FloatingActionButton (com.google.android.material.floatingactionbutton.FloatingActionButton)1 BaseActivity (com.keylesspalace.tusky.BaseActivity)1 AccountAdapter (com.keylesspalace.tusky.adapter.AccountAdapter)1 BlockEvent (com.keylesspalace.tusky.appstore.BlockEvent)1 BookmarkEvent (com.keylesspalace.tusky.appstore.BookmarkEvent)1 FavoriteEvent (com.keylesspalace.tusky.appstore.FavoriteEvent)1 PinEvent (com.keylesspalace.tusky.appstore.PinEvent)1 PreferenceChangedEvent (com.keylesspalace.tusky.appstore.PreferenceChangedEvent)1 ReblogEvent (com.keylesspalace.tusky.appstore.ReblogEvent)1 Account (com.keylesspalace.tusky.entity.Account)1