安卓ViewPager淡入淡出动画

8
我为Android实现了一个BottomNavigation视图,并有一些片段要作为BottomNavigation页面显示。根据Google Material Design Guide Lines,我想用交叉淡化动画来展示片段。
通过触摸BottomNavigation的项目,我的ViewpPager会使用默认的滑动动画更改片段。
我在这里这里阅读了一些解决方案,但这些并不是真正的淡入淡出动画,而且我无法设置淡入淡出的持续时间。
那么有没有办法在更改ViewPager的选项卡时设置动画?
2个回答

4

最终,我找到了答案。

我将ViewPager更改为一个包含我的片段(帧布局)的布局。然后,我将片段添加到fragmentTransaction中。

通过触摸BottomNavigation上的项目,当前片段隐藏,新片段使用在fragmentTransaction中定义的淡入淡出动画显示。

这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main_page);

    addFragmentsToManager();
}

private void addFragmentsToManager() {
    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);

    fragmentTransaction.add(R.id.flContent, tripFragment, tripFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, notificationFragment, notificationFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, searchFragment, searchFragment.getClass().getSimpleName());
    fragmentTransaction.add(R.id.flContent, profileFragment, profileFragment.getClass().getSimpleName());

    fragmentTransaction.hide(tripFragment);
    fragmentTransaction.hide(notificationFragment);
    fragmentTransaction.hide(searchFragment);
    fragmentTransaction.hide(profileFragment);
    fragmentTransaction.commit();
}

private void changeTab(int position) {
    Fragment fragment;
    switch (position) {
        fragment = .....// get framgnet from position
    }

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);

    fragmentTransaction.hide(prvFragment);
    fragmentTransaction.show(fragment).commit();
    prvFragment = fragment;
}

1

添加和隐藏片段存在问题。

当应用程序处于空闲状态且手机进入睡眠模式时,如果您返回到应用程序,则在活动中显示所有片段,并在一个布局中看到所有布局。


是的,有这样的问题,我找不到解决办法。 - FarshidABZ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接