@Override public void run() { int randomIndex = new Random().nextInt(mBitmapList.size()); AbsAnimatorEvaluator evaluator = AnimatorCreater.create(mAnimatorType, mMeasureW, mMeasureH, mBitmapList.get(randomIndex)); ValueAnimator animator = ValueAnimator.ofObject(evaluator, evaluator.createAnimatorStart(), evaluator.createAnimatorEnd()); animator.setDuration(mFlyDuration); animator.setInterpolator(new AccelerateInterpolator()); MagicFlyLinearLayout.MagicAnimatorListener listener = new MagicFlyLinearLayout.MagicAnimatorListener(); animator.addUpdateListener(listener); animator.addListener(new MagicFlyLinearLayout.MagicListener(listener.hashCode())); animator.start(); } }