Fragment - 等待交易动画完成

Phi*_*hil 5 android android-animation android-fragments

当我执行 FragmentTransaction 时,我使用简单的向左滑动、向右滑动自定义动画。我的问题是,我使用事务动画加载的片段包含 onResume() 中的代码,用于进行 HTTP 调用,这会导致显示“请稍候”进度对话框。它有效,但我希望将我的代码从 onResume 移动到片段中的另一个方法,该方法在片段完全加载之前不会触发。换句话说,当动画完成并且完全滑入到位时。

我用它来启动新片段

FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimation(R.anim.slide_in_right, R.anim.slide_out_left);
ft.replace(R.id.realtabcontent, new MyFragment());
ft.commit();
Run Code Online (Sandbox Code Playgroud)

我希望 MyNewFragment() 中的方法在动画 100% 完成后初始化

那可能吗?

Ton*_*ony 1

这里有两种可能的方法,

  1. 在滑入动画上实现一个 AnimationListener。

    animation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
                @Override
                public void onAnimationEnd(Animation animation) {
    
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
            });
    
    Run Code Online (Sandbox Code Playgroud)

在监听器的 onAnimationEnd() 中,调用片段中的方法来进行 HTTP 调用。

  1. 上述方法只是为了动画而浪费时间。因此,不要使用进度对话框,而是在片段中实现圆形进度条。这样你的动画和 http 调用就可以同时发生。收到响应后,删除进度微调器并显示实际的片段视图。

  • 我正在使用基于 XML 的动画,如何添加动画侦听器? (4认同)