片段 - 等待事务动画完成

5
我在执行FragmentTransaction时使用了简单的向左滑动、向右滑动的自定义动画。我的问题是,我加载事务动画的片段包含onResume()中的代码,以进行HTTP调用,这会导致我的“请稍候”进度对话框显示。虽然它能正常工作,但我希望将我的代码从onResume移动到Fragment中的另一个方法,直到片段完全加载后才触发。换句话说,当动画完成并完全滑入位置时。
我使用以下代码启动新片段:
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();

我希望在动画完成100%后,MyNewFragment()中的方法可以初始化,这是否可能?


@Tony - 我正要接受你的答案为正确答案,结果你把它删除了。 - Phil
最好的片段动画解释可以在这里找到(https://dev59.com/uGQn5IYBdhLWcg3wVF7i#20480676)。然而,针对您的特定问题,我建议采用我的答案中的第二种方法,因为它会提供更好的用户体验。 - Tony
1个回答

1
这里有两种可能的方法:
  1. Implement an AnimationListener on the slide-in animation.

    animation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
    
                }
    
                @Override
                public void onAnimationEnd(Animation animation) {
    
                }
    
                @Override
                public void onAnimationRepeat(Animation animation) {
    
                }
            });
    

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

  1. 上述方法仅为了动画而浪费时间。因此,不要使用进度对话框,而是在片段中实现一个圆形进度条。这样,您的动画和http调用可以同时进行。一旦获得响应,删除进度旋转器并显示实际的片段视图。

4
我正在使用基于XML的动画,我该如何添加一个动画监听器? - Phil
@Phil,你找到解决问题的方法了吗? - ymerdrengene

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