2016-07-14 62 views
2

我使用一个简单的幻灯片左侧,当我执行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(); 

,我想在MyNewFragment()的方法来初始化后的动画100%完成

这可能吗?

+0

@Tony - 正准备接受您的回答并将其删除 – Phil

+0

片段动画的最佳解释可以在这里找到(http://stackoverflow.com/a/20480676/1972597)。但是,我会建议从我的答案中解决您的特定问题的第二种方法,因为这会是更好的用户体验。 – Tony

回答

0

有两种方法可以在这里,

  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) { 
    
          } 
         }); 
    

在收听者onAnimationEnd(),呼叫在该片段中的方法,使HTTP调用。

  1. 上述方法浪费时间只是为了动画。因此,而不是有一个进度对话框,在你的片段内实现一个圆形的进度条。这样你的动画和http调用就可以同时发生。一旦获得响应,请移除进度微调器并显示实际的片段视图。
+2

我正在使用基于XML的动画,我将如何添加一个动画侦听器? – Phil

+0

@Phil你找到了解决问题的方法吗? – ymerdrengene