В Activity
классе добавьте addOnPageChangeListener
в ViewPager
. Смотри ниже :
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
private int state = 0;
private boolean isFloatButtonHidden = false;
private int position = 0;
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (isFloatButtonHidden == false && state == 1 && positionOffset != 0.0) {
isFloatButtonHidden = true;
//hide floating action button
swappingAway();
}
}
@Override
public void onPageSelected(int position) {
//reset floating
this.position = position;
if (state == 2) {
//have end in selected tab
isFloatButtonHidden = false;
selectedTabs(position);
}
}
@Override
public void onPageScrollStateChanged(int state) {
//state 0 = nothing happen, state 1 = begining scrolling, state 2 = stop at selected tab.
this.state = state;
if (state == 0) {
isFloatButtonHidden = false;
} else if (state == 2 && isFloatButtonHidden) {
//this only happen if user is swapping but swap back to current tab (cancel to change tab)
selectedTabs(position);
}
}
});
в вашем частном методе вы можете выполнять там пользовательские задачи.
private void swappingAway()
{
floatingActionButton.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(this, R.anim.pop_down);
floatingActionButton.startAnimation(animation);
}
private void selectedTabs(int tab)
{
floatingActionButton.show();
//a bit animation of popping up.
floatingActionButton.clearAnimation();
Animation animation = AnimationUtils.loadAnimation(this, R.anim.pop_up);
floatingActionButton.startAnimation(animation);
//you can do more task. for example, change color for each tabs, or custom action for each tabs.
}
Я намеренно не использую hide()
и show()
, так как в них есть баги, когда меняешь местами и сразу возвращаешься.
вот анимация pop_down и pop_up
pop_down.xml
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:toXScale="0.0"
android:toYScale="0.0"
android:duration="100"
android:pivotX="50%"
android:pivotY="50%"
android:shareInterpolator="true"
android:fillAfter="true">
</scale>
pop_up.xml
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:toXScale="1.0"
android:toYScale="1.0"
android:duration="500"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="200"
android:interpolator="@android:anim/bounce_interpolator"
android:shareInterpolator="true"
android:fillAfter="true">
</scale>
person
HelmiB
schedule
23.10.2015