// Path: core/src/main/java/com/kaichunlin/transition/TransitionOperation.java
// public interface TransitionOperation {
//     /**
//      * Starts the transition
//      *
//      * @return
//      */
//     @UiThread
//     boolean startTransition();
// 
//     /**
//      * Starts the transition, {@link TransitionAdapter#getAdapterState()}.isTransitioning() will always returns true after this method is executed.
//      *
//      * @param progress the starting transition progress, the valid value range depends on the specific Adapter implementation
//      * @return true if the call caused the transition to be started, false if the transition is already in the started state
//      */
//     @UiThread
//     boolean startTransition(float progress);
// 
//     /**
//      * Updates the transition progress
//      *
//      * @param progress
//      */
//     void updateProgress(float progress);
// 
//     /**
//      * Stops the transition
//      */
//     @UiThread
//     void stopTransition();
// }


import android.view.View;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;
import com.kaichunlin.transition.TransitionOperation;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
package com.kaichunlin.transition.animation;




/**
 * The default {@link StateController} used by {@link AnimationManager} and {@link TransitionAnimation}
 * to control animation state.
 */
class AnimationController extends android.view.animation.Animation implements StateController, android.view.animation.Animation.AnimationListener {
    private static final int STOP_END = 0x01;
    private static final int STOP_CANCEL = 0x02;
    private static final int STOP_RESET = 0x04;
    private final List<AbstractAnimation> mAnimationList = new ArrayList<>();
    private WeakReference<View> mTargetRef;
    private boolean mReverse;
// Path: core/src/main/java/com/kaichunlin/transition/TransitionOperation.java
// public interface TransitionOperation {
//     /**
//      * Starts the transition
//      *
//      * @return
//      */
//     @UiThread
//     boolean startTransition();
// 
//     /**
//      * Starts the transition, {@link TransitionAdapter#getAdapterState()}.isTransitioning() will always returns true after this method is executed.
//      *
//      * @param progress the starting transition progress, the valid value range depends on the specific Adapter implementation
//      * @return true if the call caused the transition to be started, false if the transition is already in the started state
//      */
//     @UiThread
//     boolean startTransition(float progress);
// 
//     /**
//      * Updates the transition progress
//      *
//      * @param progress
//      */
//     void updateProgress(float progress);
// 
//     /**
//      * Stops the transition
//      */
//     @UiThread
//     void stopTransition();
// }


// Path: core/src/main/java/com/kaichunlin/transition/animation/AnimationController.java
import android.view.View;
import android.view.animation.LinearInterpolator;
import android.view.animation.Transformation;
import com.kaichunlin.transition.TransitionOperation;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;

package com.kaichunlin.transition.animation;




/**
 * The default {@link StateController} used by {@link AnimationManager} and {@link TransitionAnimation}
 * to control animation state.
 */
class AnimationController extends android.view.animation.Animation implements StateController, android.view.animation.Animation.AnimationListener {
    private static final int STOP_END = 0x01;
    private static final int STOP_CANCEL = 0x02;
    private static final int STOP_RESET = 0x04;
    private final List<AbstractAnimation> mAnimationList = new ArrayList<>();
    private WeakReference<View> mTargetRef;
    private boolean mReverse;
    private List<TransitionOperation> mTransitionList;