У меня есть AppBarLayout, ViewPager под ним и кнопка с плавающим действием в одном действии. Я хочу анимировать FAB при прокрутке ViewPager. Взгляните на приведенные ниже экраны.
Когда Tab1 является текущей вкладкой, FAB должен находиться в правом нижнем углу. Когда Tab2 является текущей вкладкой, FAB должен находиться в нижней центральной области. Когда Tab3 является текущей вкладкой, FAB должен вернуться в нижний правый угол. Когда Tab4 является текущей вкладкой, FAB должен быть привязан к ImageView4 и должен находиться в правом нижнем углу ImageView4.
Как я могу этого добиться? Пожалуйста, помогите мне.
Мне нужно реализовать onPageChangeListener на ViewPager и обработать то же самое в onPageScrolled().
mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
final int width = mViewPager.getWidth();
if(position == 0) {
// Transition from page 0 to page 1 (horizontal shift)
int translationX = (int) ((-(width - mFab.getWidth()) / 2f) * positionOffset);
mFab.setTranslationX(translationX);
mFab.setTranslationY(0);
} else if(position == 1) {
// Transition from page 1 to page 2 (horizontal shift)
int translationX = (int) (((width - mFab.getWidth())) * positionOffset);
mFab.setTranslationX(translationX);
mFab.setTranslationY(0);
} else if(position == 2) {
// Transition from page 2 to page 3
}
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
Когда я перехожу с вкладки 1 на вкладку 2, FAB переводит правильно, однако в конце концов он возвращается в исходное положение.
Как мне анимировать FAB в onPageScrolled()?