【发布时间】:2015-11-19 00:08:31
【问题描述】:
我在它下面有 AppBarLayout、ViewPager 和一个 Activity 中的浮动操作按钮。我想在滚动 ViewPager 时为 FAB 设置动画。看看下面的屏幕。
当 Tab1 是当前选项卡时,FAB 应该在右下角。当 Tab2 是当前选项卡时,FAB 应该位于底部中心区域。当 Tab3 是当前选项卡时,FAB 应移回右下角。当 Tab4 是当前选项卡时,FAB 应该锚定到 ImageView4 并且应该位于 ImageView4 的右下角。
我怎样才能做到这一点?请帮帮我。
我需要在 ViewPager 上实现 onPageChangeListener 并在 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) {
}
});
当我从 tab1 转到 tab2 时,FAB 翻译正确,但最终它又回到了原来的位置。
我应该如何在 onPageScrolled() 中为 FAB 设置动画?
【问题讨论】:
-
你真的需要它是同一个FAB吗?如果你每个片段都有一个(这样你可以将它们固定到正确的位置),你可以像这里的示例 #4 那样为它们设置动画:google.com/design/spec/components/…
标签: android animation android-viewpager floating-action-button