add: fab and toolbar hide when scrolling
This commit is contained in:
@@ -83,7 +83,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
private FragmentPagerAdapterBuilder.StoredFragmentPagerAdapter mPagerAdapter;
|
||||
|
||||
private OnActivityResultDelegate.Mediator mActivityResultMediator = new OnActivityResultDelegate.Mediator();
|
||||
private DrawableSaver mDrawerHeaderBackgroundSaver, mAppbarBackgroundSaver;
|
||||
private DrawableSaver mDrawerHeaderBackgroundSaver;
|
||||
private VersionGuard mVersionGuard;
|
||||
|
||||
|
||||
@@ -178,7 +178,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
R.string.text_drawer_close);
|
||||
drawerToggle.syncState();
|
||||
mDrawerLayout.addDrawerListener(drawerToggle);
|
||||
mAppbarBackgroundSaver = new DrawableSaver.ImageSaver(this, "appbar_background", (ImageView) $(R.id.app_bar_bg));
|
||||
}
|
||||
|
||||
private void setUpTabViewPager() {
|
||||
@@ -192,11 +191,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
tabLayout.setupWithViewPager(mViewPager);
|
||||
}
|
||||
|
||||
@Click(R.id.add)
|
||||
void showAddFilePanel() {
|
||||
mAddBottomMenuPanel.show();
|
||||
}
|
||||
|
||||
@Click(R.id.create_new_file)
|
||||
void createScriptFile() {
|
||||
new ScriptOperations(this, mDrawerLayout)
|
||||
@@ -271,15 +265,9 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
mVersionGuard.checkDeprecateAndUpdate();
|
||||
}
|
||||
|
||||
@Click(R.id.toolbar)
|
||||
public void OnToolbarClick() {
|
||||
mAppbarBackgroundSaver.select(this, mActivityResultMediator);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMessageEvent(MessageEvent event) {
|
||||
if (event.message.equals(MESSAGE_CLEAR_BACKGROUND_SETTINGS)) {
|
||||
mAppbarBackgroundSaver.reset();
|
||||
mDrawerHeaderBackgroundSaver.reset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -107,11 +107,10 @@ public class MyScriptListFragment extends Fragment {
|
||||
mScriptFiles.clear();
|
||||
mDirectories.clear();
|
||||
StorageFileProvider.getDefault().getInitialDirectoryScriptFiles()
|
||||
.subscribeOn(Schedulers.computation())
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new SimpleObserver<ScriptFile>() {
|
||||
|
||||
|
||||
@Override
|
||||
public void onNext(@io.reactivex.annotations.NonNull ScriptFile file) {
|
||||
if (file.isFile()) {
|
||||
|
||||
@@ -0,0 +1,84 @@
|
||||
package com.stardust.widget;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.AnimatorListenerAdapter;
|
||||
import android.animation.TimeInterpolator;
|
||||
import android.content.Context;
|
||||
import android.support.design.widget.CoordinatorLayout;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/8/20.
|
||||
*/
|
||||
|
||||
public class ScrollAwareFABBehavior extends FloatingActionButton.Behavior {
|
||||
|
||||
private static final long DURATION = 200;
|
||||
private static final TimeInterpolator INTERPOLATOR = new FastOutSlowInInterpolator();
|
||||
private boolean mHidden = false;
|
||||
|
||||
public ScrollAwareFABBehavior(Context context, AttributeSet attrs) {
|
||||
super();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) {
|
||||
super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed);
|
||||
if (dyConsumed > 0) {
|
||||
onScrollDown(coordinatorLayout, child);
|
||||
} else if (dyConsumed < 0) {
|
||||
onScrollUp(coordinatorLayout, child);
|
||||
}
|
||||
}
|
||||
|
||||
private void onScrollUp(CoordinatorLayout parent, FloatingActionButton button) {
|
||||
if (!mHidden) {
|
||||
return;
|
||||
}
|
||||
startShowingAnimation(parent, button);
|
||||
}
|
||||
|
||||
private void startShowingAnimation(CoordinatorLayout parent, FloatingActionButton button) {
|
||||
button.animate()
|
||||
.translationY(0)
|
||||
.setDuration(DURATION)
|
||||
.setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mHidden = false;
|
||||
}
|
||||
})
|
||||
.start();
|
||||
}
|
||||
|
||||
private void onScrollDown(CoordinatorLayout parent, FloatingActionButton button) {
|
||||
if (mHidden) {
|
||||
return;
|
||||
}
|
||||
startHidingAnimation(parent, button);
|
||||
}
|
||||
|
||||
private void startHidingAnimation(CoordinatorLayout parent, FloatingActionButton button) {
|
||||
button.animate()
|
||||
.translationY(parent.getY() + parent.getHeight() - button.getY())
|
||||
.setDuration(DURATION)
|
||||
.setInterpolator(INTERPOLATOR)
|
||||
.setListener(new AnimatorListenerAdapter() {
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation) {
|
||||
mHidden = true;
|
||||
}
|
||||
})
|
||||
.start();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user