added new option in preferences.xml

modified MainActivity so that the "compose new toot" button is exposed as a static (had to copy its reference into a new variable so as to not upset BindView)
modified TimelineFragment so that when the RecycleView is instantiated we overload the onScroll so that we can hide the FAB
This commit is contained in:
Zachary Epps 2017-04-07 03:40:59 -04:00 committed by Zac Epps
parent 632cb0d6e3
commit de0f1b7ab0
3 changed files with 27 additions and 1 deletions

View File

@ -77,6 +77,8 @@ public class MainActivity extends BaseActivity {
@BindView(R.id.tab_layout) TabLayout tabLayout; @BindView(R.id.tab_layout) TabLayout tabLayout;
@BindView(R.id.pager) ViewPager viewPager; @BindView(R.id.pager) ViewPager viewPager;
static FloatingActionButton composeBtn;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -176,6 +178,8 @@ public class MainActivity extends BaseActivity {
// Setup push notifications // Setup push notifications
if (arePushNotificationsEnabled()) enablePushNotifications(); if (arePushNotificationsEnabled()) enablePushNotifications();
composeBtn = floatingBtn;
} }
@Override @Override

View File

@ -16,9 +16,12 @@
package com.keylesspalace.tusky; package com.keylesspalace.tusky;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout; import android.support.design.widget.TabLayout;
import android.support.v4.widget.SwipeRefreshLayout; import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.DividerItemDecoration;
@ -85,7 +88,7 @@ public class TimelineFragment extends SFragment implements
hashtagOrId = arguments.getString("hashtag_or_id"); hashtagOrId = arguments.getString("hashtag_or_id");
} }
View rootView = inflater.inflate(R.layout.fragment_timeline, container, false); final View rootView = inflater.inflate(R.layout.fragment_timeline, container, false);
// Setup the SwipeRefreshLayout. // Setup the SwipeRefreshLayout.
Context context = getContext(); Context context = getContext();
@ -103,6 +106,20 @@ public class TimelineFragment extends SFragment implements
divider.setDrawable(drawable); divider.setDrawable(drawable);
recyclerView.addItemDecoration(divider); recyclerView.addItemDecoration(divider);
scrollListener = new EndlessOnScrollListener(layoutManager) { scrollListener = new EndlessOnScrollListener(layoutManager) {
@Override
public void onScrolled(RecyclerView view, int dx, int dy) {
super.onScrolled(view, dx, dy);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
if (dy > 0 && prefs.getBoolean("fabHide", false) && MainActivity.composeBtn.isShown()) {
MainActivity.composeBtn.hide(); // hides the button if we're scrolling down
} else if (dy < 0 && prefs.getBoolean("fabHide", false) && !MainActivity.composeBtn.isShown()) {
MainActivity.composeBtn.show(); // shows it if we are scrolling up
}
}
@Override @Override
public void onLoadMore(int page, int totalItemsCount, RecyclerView view) { public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
TimelineAdapter adapter = (TimelineAdapter) view.getAdapter(); TimelineAdapter adapter = (TimelineAdapter) view.getAdapter();

View File

@ -9,6 +9,11 @@
android:title="@string/pref_title_light_theme" android:title="@string/pref_title_light_theme"
android:defaultValue="false" /> android:defaultValue="false" />
<CheckBoxPreference
android:key="fabHide"
android:title="Hide FAB while scrolling"
android:defaultValue="false" />
</PreferenceCategory> </PreferenceCategory>
<PreferenceScreen android:title="@string/pref_title_notification_settings"> <PreferenceScreen android:title="@string/pref_title_notification_settings">