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
main
Zachary Epps 8 years ago committed by Zac Epps
parent 632cb0d6e3
commit de0f1b7ab0
  1. 4
      app/src/main/java/com/keylesspalace/tusky/MainActivity.java
  2. 19
      app/src/main/java/com/keylesspalace/tusky/TimelineFragment.java
  3. 5
      app/src/main/res/xml/preferences.xml

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

@ -16,9 +16,12 @@
package com.keylesspalace.tusky;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DividerItemDecoration;
@ -85,7 +88,7 @@ public class TimelineFragment extends SFragment implements
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.
Context context = getContext();
@ -103,6 +106,20 @@ public class TimelineFragment extends SFragment implements
divider.setDrawable(drawable);
recyclerView.addItemDecoration(divider);
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
public void onLoadMore(int page, int totalItemsCount, RecyclerView view) {
TimelineAdapter adapter = (TimelineAdapter) view.getAdapter();

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

Loading…
Cancel
Save