2017-09-12 9 views
0

私はここに、フラグメントを持っているがonCreateView方法である:ロッテアニメーションが完了したらどうすればいいですか?

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    mView = inflater.inflate(R.layout.fragment_added_to_cart_anim, container, false); 
    ButterKnife.bind(this, mView); 

    mAddedToCartAnimation.setAnimation("checked_done_.json"); 
    mAddedToCartAnimation.loop(false); 
    mAddedToCartAnimation.playAnimation(); 

    // Remove fragment when animation is finished. 


    return mView; 
} 

私はlottieアニメーションが終了したときgetActivity().getSupportFragmentManager().beginTransaction().remove(this).commit();を使用してフラグメントを削除する必要があります。私が正しく理解していれば、isAnimating() lottieメソッドがfalseを返すとき、アニメーションは終了しました。私の設定ではアニメーションがループしないので、現在のフラグメントを削除する必要があります。しかし、アニメーションがまだ実行されている可能性があるので、if文を実行するだけでは使用できません。

ロッテアニメーションが終了したら、フラグメントを削除する方法が必要です。どのようにすればいいですか?

答えて

3

このコードは、私の作品:

mAddedToCartAnimation.addAnimatorListener(new Animator.AnimatorListener() { 
     @Override 
     public void onAnimationStart(Animator animation) { 
      Log.e("Animation:","start"); 
     } 

     @Override 
     public void onAnimationEnd(Animator animation) { 
      Log.e("Animation:","end"); 
      //Your code for remove the fragment 
      try { 
       getActivity().getSupportFragmentManager() 
         .beginTransaction().remove(this).commit(); 
      } catch(Exception ex) { 
       ex.toString(); 
      } 
     } 

     @Override 
     public void onAnimationCancel(Animator animation) { 
      Log.e("Animation:","cancel"); 
     } 

     @Override 
     public void onAnimationRepeat(Animator animation) { 
      Log.e("Animation:","repeat"); 
     } 
    }); 

私はこれがあなたの問題を解決を願って:)

関連する問題