【问题标题】:Android ViewPager CrossFade animationAndroid ViewPager CrossFade 动画
【发布时间】:2017-11-07 20:14:42
【问题描述】:

我为 android 实现了一个 BottomNavigation 视图,并且我有一些片段要显示为 BottomNavigation 页面。根据Google Material Design Guide Lines,我想展示带有交叉淡入淡出动画的片段。

通过触摸 BottomNavigation 的项目,我的 ViewpPager 会使用默认幻灯片动画更改片段。

我在thisthis 中阅读了一些解决方案。但这些并不是真正的淡入淡出动画,我无法设置淡入淡出的持续时间。

那么有什么方法可以在更改 ViewPager 的选项卡时设置动画?

【问题讨论】:

    标签: android android-viewpager android-animation


    【解决方案1】:

    终于,我找到了答案。

    我使用布局更改了 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;
    }
    

    【讨论】:

      【解决方案2】:

      添加和隐藏片段有问题。

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

      【讨论】:

      • 是的,有,但我找不到解决方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多