use of android.animation.AnimatorSet in project UltimateAndroid by cymcsg.
the class MenuCircleShowingAnimation method openPromotedActions.
public AnimatorSet openPromotedActions() {
if (objectAnimator == null) {
objectAnimatorSetup();
}
AnimatorSet animation = new AnimatorSet();
for (int i = 0; i < promotedActions.size(); i++) {
objectAnimator[i] = setOpenAnimation(promotedActions.get(i), i);
}
if (objectAnimator.length == 0) {
objectAnimator = null;
}
animation.playTogether(objectAnimator);
animation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mainImageButton.startAnimation(rotateOpenAnimation);
mainImageButton.setClickable(false);
showPromotedActions();
}
@Override
public void onAnimationEnd(Animator animator) {
mainImageButton.setClickable(true);
}
@Override
public void onAnimationCancel(Animator animator) {
mainImageButton.setClickable(true);
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
return animation;
}
use of android.animation.AnimatorSet in project UltimateAndroid by cymcsg.
the class DownloadProgressBar method setupAnimations.
private void setupAnimations() {
mOvershootInterpolator = new OvershootInterpolator(mOvershootValue);
mArrowLineToDot = ValueAnimator.ofFloat(0, mRadius / 4);
mArrowLineToDot.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mArrowLineToDotAnimatedValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mArrowLineToDot.setDuration(200);
mArrowLineToDot.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mState = State.ANIMATING_LINE_TO_DOT;
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onAnimationStarted();
}
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mArrowLineToDot.setInterpolator(new AccelerateInterpolator());
mArrowLineToHorizontalLine = ValueAnimator.ofFloat(0, mRadius / 2);
mArrowLineToHorizontalLine.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mArrowLineToHorizontalLineAnimatedValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mArrowLineToHorizontalLine.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mArrowLineToHorizontalLine.setDuration(600);
mArrowLineToHorizontalLine.setStartDelay(400);
mArrowLineToHorizontalLine.setInterpolator(mOvershootInterpolator);
mDotToProgressAnimation = ValueAnimator.ofFloat(0, mRadius);
mDotToProgressAnimation.setDuration(600);
mDotToProgressAnimation.setStartDelay(600);
mDotToProgressAnimation.setInterpolator(mOvershootInterpolator);
mDotToProgressAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mDotToProgressAnimatedValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mDotToProgressAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
if (mWhichProgress == State.ANIMATING_PROGRESS)
mProgressAnimationSet.start();
else if (mWhichProgress == State.ANIMATING_MANUAL_PROGRESS)
mManualProgressAnimationSet.start();
mState = mWhichProgress;
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mArrowToLineAnimatorSet = new AnimatorSet();
mArrowToLineAnimatorSet.playTogether(mArrowLineToDot, mArrowLineToHorizontalLine, mDotToProgressAnimation);
mProgressAnimation = ValueAnimator.ofFloat(0, 360f);
mProgressAnimation.setStartDelay(500);
mProgressAnimation.setInterpolator(new LinearInterpolator());
mProgressAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mCurrentGlobalProgressValue = (float) valueAnimator.getAnimatedValue();
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onProgressUpdate(mCurrentGlobalProgressValue);
}
invalidate();
}
});
mProgressAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mDotToProgressAnimatedValue = 0;
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mProgressAnimation.setDuration(mProgressDuration);
mManualProgressAnimation = ValueAnimator.ofFloat(mFromArc, mToArc);
mManualProgressAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mCurrentGlobalManualProgressValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mManualProgressAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onManualProgressStarted();
}
mDotToProgressAnimatedValue = 0;
}
@Override
public void onAnimationEnd(Animator animator) {
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onManualProgressEnded();
}
if (mToArc > 359) {
mCollapseAnimation.start();
}
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mExpandAnimation = ValueAnimator.ofFloat(0, mRadius / 6);
mExpandAnimation.setDuration(300);
mExpandAnimation.setInterpolator(new DecelerateInterpolator());
mExpandAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mExpandCollapseValue = (float) animation.getAnimatedValue();
invalidate();
}
});
mCollapseAnimation = ValueAnimator.ofFloat(mRadius / 6, mStrokeWidth / 2);
mCollapseAnimation.setDuration(300);
mCollapseAnimation.setStartDelay(300);
mCollapseAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
if (mState == State.ANIMATING_MANUAL_PROGRESS) {
if (mResultState == State.ANIMATING_ERROR) {
mErrorAnimation.start();
} else if (mResultState == State.ANIMATING_SUCCESS) {
mSuccessAnimation.start();
}
}
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mCollapseAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
mCollapseAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mExpandCollapseValue = (float) animation.getAnimatedValue();
invalidate();
}
});
mManualProgressAnimationSet = new AnimatorSet();
mManualProgressAnimationSet.playSequentially(mExpandAnimation, mManualProgressAnimation);
mProgressAnimationSet = new AnimatorSet();
mProgressAnimationSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
if (mResultState == State.ANIMATING_ERROR) {
mErrorAnimation.start();
} else if (mResultState == State.ANIMATING_SUCCESS) {
mSuccessAnimation.start();
}
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
mProgressAnimationSet.playSequentially(mExpandAnimation, mProgressAnimation, mCollapseAnimation);
mErrorAnimation = ValueAnimator.ofFloat(0, mRadius / 4);
mErrorAnimation.setDuration(600);
mErrorAnimation.setStartDelay(500);
mErrorAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
mErrorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mErrorValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mErrorAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mState = State.ANIMATING_ERROR;
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onAnimationError();
}
}
@Override
public void onAnimationEnd(Animator animator) {
postDelayed(new Runnable() {
@Override
public void run() {
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onAnimationEnded();
}
mState = State.IDLE;
resetValues();
invalidate();
}
}, mResultDuration);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
mSuccessAnimation = ValueAnimator.ofFloat(0, mRadius / 4);
mSuccessAnimation.setDuration(600);
mSuccessAnimation.setStartDelay(500);
mSuccessAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
mSuccessAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator valueAnimator) {
mSuccessValue = (float) valueAnimator.getAnimatedValue();
invalidate();
}
});
mSuccessAnimation.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
mState = State.ANIMATING_SUCCESS;
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onAnimationSuccess();
}
}
@Override
public void onAnimationEnd(Animator animator) {
postDelayed(new Runnable() {
@Override
public void run() {
if (mOnProgressUpdateListener != null) {
mOnProgressUpdateListener.onAnimationEnded();
}
mState = State.IDLE;
resetValues();
invalidate();
}
}, mResultDuration);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
}
use of android.animation.AnimatorSet in project FlexibleAdapter by davideas.
the class AnimatorAdapter method animateView.
/**
* Performs checks to scroll animate the itemView and in case, it animates the view.
* <p><b>Note:</b> If you have to change at runtime the LayoutManager <i>and</i> add
* Scrollable Headers too, consider to add them in post, using a {@code delay >= 0},
* otherwise scroll animations on all items will not start correctly.</p>
*
* @param holder the ViewHolder just bound
* @param position the current item position
*/
@SuppressWarnings("ConstantConditions")
protected final void animateView(final RecyclerView.ViewHolder holder, final int position) {
if (mRecyclerView == null)
return;
// Use always the max child count reached
if (mMaxChildViews < mRecyclerView.getChildCount()) {
mMaxChildViews = mRecyclerView.getChildCount();
}
// Animate only during initial loading?
if (onlyEntryAnimation && mLastAnimatedPosition >= mMaxChildViews) {
shouldAnimate = false;
}
int lastVisiblePosition = Utils.findLastVisibleItemPosition(mRecyclerView.getLayoutManager());
// }
if (holder instanceof FlexibleViewHolder && shouldAnimate && !isFastScroll && !mAnimatorNotifierObserver.isPositionNotified() && (position > lastVisiblePosition || isReverseEnabled || isScrollableHeaderOrFooter(position) || (position == 0 && mMaxChildViews == 0))) {
// Cancel animation is necessary when fling
int hashCode = holder.itemView.hashCode();
cancelExistingAnimation(hashCode);
// User animators
List<Animator> animators = new ArrayList<>();
FlexibleViewHolder flexibleViewHolder = (FlexibleViewHolder) holder;
flexibleViewHolder.scrollAnimators(animators, position, position >= lastVisiblePosition);
// Execute the animations together
AnimatorSet set = new AnimatorSet();
set.playTogether(animators);
set.setInterpolator(mInterpolator);
// Single view duration
long duration = mDuration;
for (Animator animator : animators) {
if (animator.getDuration() != DEFAULT_DURATION) {
duration = animator.getDuration();
}
}
//Log.v(TAG, "duration=" + duration);
set.setDuration(duration);
set.addListener(new HelperAnimatorListener(hashCode));
if (mEntryStep) {
// Stop stepDelay when screen is filled
set.setStartDelay(calculateAnimationDelay(position));
}
set.start();
mAnimators.put(hashCode, set);
if (DEBUG)
Log.v(TAG, "animateView Scroll animation on position " + position);
}
mAnimatorNotifierObserver.clearNotified();
// Update last animated position
mLastAnimatedPosition = position;
}
use of android.animation.AnimatorSet in project FlexibleAdapter by davideas.
the class AnimatorAdapter method animateView.
/**
* Animates the view based on the custom animator list built with {@link #getAnimators(View, int, boolean)}.
*
* @since 5.0.0-b1
* @deprecated New system in place. Implement {@link FlexibleViewHolder#scrollAnimators(List, int, boolean)}
* and add new animator(s) to the list of {@code animators}.
*/
@Deprecated
public final void animateView(final View itemView, int position) {
if (shouldAnimate && !isFastScroll && !mAnimatorNotifierObserver.isPositionNotified() && (isReverseEnabled || position > mLastAnimatedPosition || (position == 0 && mRecyclerView.getChildCount() == 0))) {
//Cancel animation is necessary when fling
cancelExistingAnimation(itemView.hashCode());
//Retrieve user animators
List<Animator> animators = getAnimators(itemView, position, position > mLastAnimatedPosition);
//Add Alpha animator
ViewCompat.setAlpha(itemView, 0);
animators.add(ObjectAnimator.ofFloat(itemView, "alpha", 0f, 1f));
Log.w(TAG, "Started Deprecated Animation on position " + position);
//Execute the animations
AnimatorSet set = new AnimatorSet();
set.playTogether(animators);
set.setInterpolator(mInterpolator);
set.setDuration(mDuration);
set.addListener(new HelperAnimatorListener(itemView.hashCode()));
if (mEntryStep) {
set.setStartDelay(calculateAnimationDelay(position));
}
set.start();
mAnimators.put(itemView.hashCode(), set);
//Animate only during initial loading?
if (onlyEntryAnimation && mLastAnimatedPosition >= mMaxChildViews) {
shouldAnimate = false;
}
}
mAnimatorNotifierObserver.clearNotified();
mLastAnimatedPosition = position;
}
use of android.animation.AnimatorSet in project UltimateAndroid by cymcsg.
the class RippleBackgroundActivity method foundDevice.
private void foundDevice() {
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setDuration(400);
animatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
ArrayList<Animator> animatorList = new ArrayList<Animator>();
ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(foundDevice, "ScaleX", 0f, 1.2f, 1f);
animatorList.add(scaleXAnimator);
ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(foundDevice, "ScaleY", 0f, 1.2f, 1f);
animatorList.add(scaleYAnimator);
animatorSet.playTogether(animatorList);
foundDevice.setVisibility(View.VISIBLE);
animatorSet.start();
}
Aggregations