2016-06-20 4 views
4

フラグメントを置き換えながら循環参照アニメーションを作成する方法を知りました。フラグメントを置き換えながら循環参照アニメーション

私は私のフラグメントを置き換えるために、このコードを使用しています:

 getFragmentManager() 
      .beginTransaction() 
      .replace(R.id.mission_detail_appointment_container, new AppointmentDeclineFragment()) 
      .commit(); 

を私は円形明らかにするアニメーション行うには、このコードだ:

Animator anim = ViewAnimationUtils.createCircularReveal(appointmentContainer, (int)motionEventX, (int)motionEventY, 0, finalRadius); 
anim.start(); 

は、アニメーターを起動する方法はあります私の断片を置き換えますか?私はsetCustomAnimationメソッドを見ただけですが、引数としてintリソースをとり、Animatorオブジェクトに行きます。

ご協力ありがとうございました

答えて

14

私は最終的に回避策を見つけました。それを必要とする人にとっては、それが私の円形の公開アニメーションを断片的に実装することに決めた方法です。

view.addOnLayoutChangeListener(new View.OnLayoutChangeListener() { 

      @TargetApi(Build.VERSION_CODES.LOLLIPOP) 
      @Override 
      public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { 
       v.removeOnLayoutChangeListener(this); 
       int cx = getArguments().getInt(MOTION_X_ARG); 
       int cy = getArguments().getInt(MOTION_Y_ARG); 
       int width = getResources().getDimensionPixelSize(R.dimen.fragment_appointment_width); 
       int height = getResources().getDimensionPixelSize(R.dimen.fragment_appointment_height); 

       float finalRadius = Math.max(width, height)/2 + Math.max(width - cx, height - cy); 
       Animator anim = ViewAnimationUtils.createCircularReveal(v, cx, cy, 0, finalRadius); 
       anim.setDuration(500); 
       anim.start(); 
      } 
     }); 
:私のフラグメントのonCreateView方法でonLayoutChangeListenerを追加することで