/** * @param animate whether to animate the change * @return this, to allow builder pattern */ public T show(boolean animate) { mIsHidden = false; if (isWeakReferenceValid()) { TextView textView = mTextViewRef.get(); if (animate) { textView.setScaleX(0); textView.setScaleY(0); textView.setVisibility(View.VISIBLE); ViewPropertyAnimatorCompat animatorCompat = ViewCompat.animate(textView); animatorCompat.cancel(); animatorCompat.setDuration(mAnimationDuration); animatorCompat.scaleX(1).scaleY(1); animatorCompat.setListener(null); animatorCompat.start(); } else { textView.setScaleX(1); textView.setScaleY(1); textView.setVisibility(View.VISIBLE); } } return getSubInstance(); }
/** * Preform your animation. You do not need to override this in most cases cause the default is pretty good. * Listeners will be overridden **/ protected ViewPropertyAnimatorCompat animateMoveImpl(final ViewHolder holder, int fromX, int fromY, int toX, int toY) { final View view = holder.itemView; final int deltaX = toX - fromX; final int deltaY = toY - fromY; ViewCompat.animate(view).cancel(); if (deltaX != 0) { ViewCompat.animate(view).translationX(0); } if (deltaY != 0) { ViewCompat.animate(view).translationY(0); } // TODO: make EndActions end listeners instead, since end actions aren't called when // vpas are canceled (and can't end them. why?) // need listener functionality in VPACompat for this. Ick. return ViewCompat.animate(view).setInterpolator(null).setDuration(getMoveDuration()); }
@Override protected void subscribeActual(final CompletableObserver completableObserver) { verifyMainThread(); final View view = viewWeakRef.get(); if (view == null) { completableObserver.onComplete(); return; } final ViewPropertyAnimatorCompat animator = ViewCompat.animate(view); completableObserver.onSubscribe(createAnimationDisposable(animator, onAnimationCancelAction)); if (preTransformActions != null) { applyActions(preTransformActions, animator); animator.setDuration(NONE).setStartDelay(NONE) .withEndAction(() -> runAnimation(completableObserver, animator)) .start(); } else { runAnimation(completableObserver, animator); } }
public void start() { if (!this.mIsStarted) { Iterator i$ = this.mAnimators.iterator(); while (i$.hasNext()) { ViewPropertyAnimatorCompat animator = (ViewPropertyAnimatorCompat) i$.next(); if (this.mDuration >= 0) { animator.setDuration(this.mDuration); } if (this.mInterpolator != null) { animator.setInterpolator(this.mInterpolator); } if (this.mListener != null) { animator.setListener(this.mProxyListener); } animator.start(); } this.mIsStarted = true; } }
public void animateToMode(boolean toActionMode) { ViewPropertyAnimatorCompat fadeOut; ViewPropertyAnimatorCompat fadeIn; if (toActionMode) { showForActionMode(); } else { hideForActionMode(); } if (toActionMode) { fadeOut = this.mDecorToolbar.setupAnimatorToVisibility(4, FADE_OUT_DURATION_MS); fadeIn = this.mContextView.setupAnimatorToVisibility(0, FADE_IN_DURATION_MS); } else { fadeIn = this.mDecorToolbar.setupAnimatorToVisibility(0, FADE_IN_DURATION_MS); fadeOut = this.mContextView.setupAnimatorToVisibility(8, FADE_OUT_DURATION_MS); } ViewPropertyAnimatorCompatSet set = new ViewPropertyAnimatorCompatSet(); set.playSequentially(fadeOut, fadeIn); set.start(); }
public void animateToVisibility(int visibility) { if (this.mVisibilityAnim != null) { this.mVisibilityAnim.cancel(); } if (visibility == 0) { if (getVisibility() != 0) { ViewCompat.setAlpha(this, 0.0f); } ViewPropertyAnimatorCompat anim = ViewCompat.animate(this).alpha(1.0f); anim.setDuration(200); anim.setInterpolator(sAlphaInterpolator); anim.setListener(this.mVisAnimListener.withFinalVisibility(anim, visibility)); anim.start(); return; } anim = ViewCompat.animate(this).alpha(0.0f); anim.setDuration(200); anim.setInterpolator(sAlphaInterpolator); anim.setListener(this.mVisAnimListener.withFinalVisibility(anim, visibility)); anim.start(); }
public ViewPropertyAnimatorCompat setupAnimatorToVisibility(int visibility, long duration) { if (this.mVisibilityAnim != null) { this.mVisibilityAnim.cancel(); } if (visibility == 0) { if (getVisibility() != 0) { ViewCompat.setAlpha(this, 0.0f); } ViewPropertyAnimatorCompat anim = ViewCompat.animate(this).alpha(1.0f); anim.setDuration(duration); anim.setListener(this.mVisAnimListener.withFinalVisibility(anim, visibility)); return anim; } anim = ViewCompat.animate(this).alpha(0.0f); anim.setDuration(duration); anim.setListener(this.mVisAnimListener.withFinalVisibility(anim, visibility)); return anim; }
public void createAnimatorToHeadView(final View v, final float angle) { ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = ViewCompat.animate(v); viewPropertyAnimatorCompat.setDuration(200); viewPropertyAnimatorCompat.setInterpolator(new DecelerateInterpolator()); viewPropertyAnimatorCompat.rotationX(90); viewPropertyAnimatorCompat.start(); viewPropertyAnimatorCompat.setUpdateListener(new ViewPropertyAnimatorUpdateListener() { @Override public void onAnimationUpdate(View view) { float height = ViewCompat.getTranslationY(mChildView); mHeadLayout.setPivotX(mHeadLayout.getWidth() / 2); mHeadLayout.setPivotY(height); } }); }
public void finishRefreshing() { if (mChildView != null) { ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = ViewCompat.animate(mChildView); viewPropertyAnimatorCompat.setDuration(200); viewPropertyAnimatorCompat.y(ViewCompat.getTranslationY(mChildView)); viewPropertyAnimatorCompat.translationY(0); viewPropertyAnimatorCompat.setInterpolator(new DecelerateInterpolator()); viewPropertyAnimatorCompat.start(); if (mMaterialHeaderView != null) { mMaterialHeaderView.onComplete(MaterialRefreshLayout.this); } else if (mSunLayout != null) { mSunLayout.onComplete(MaterialRefreshLayout.this); } if (refreshListener != null) { refreshListener.onfinish(); } } isRefreshing = false; progressValue = 0; }
@Override protected void onCreateAnimation(MoveAnimationInfo info) { final View view = info.holder.itemView; final int deltaX = info.toX - info.fromX; final int deltaY = info.toY - info.fromY; if (deltaX != 0) { ViewCompat.animate(view).translationX(0); } if (deltaY != 0) { ViewCompat.animate(view).translationY(0); } final ViewPropertyAnimatorCompat animator = ViewCompat.animate(view); animator.setDuration(getDuration()); animator.setInterpolator(MOVE_INTERPOLATOR); startActiveItemAnimation(info, info.holder, animator); }
@Override protected void onCreateAnimation(MoveAnimationInfo info) { final View view = info.holder.itemView; final int deltaX = info.toX - info.fromX; final int deltaY = info.toY - info.fromY; if (deltaX != 0) { ViewCompat.animate(view).translationX(0); } if (deltaY != 0) { ViewCompat.animate(view).translationY(0); } final ViewPropertyAnimatorCompat animator = ViewCompat.animate(view); animator.setDuration(getDuration()); startActiveItemAnimation(info, info.holder, animator); }
public void finishRefreshing() { if (mChildView != null) { ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = ViewCompat.animate(mChildView); viewPropertyAnimatorCompat.setDuration(200); viewPropertyAnimatorCompat.y(ViewCompat.getTranslationY(mChildView)); viewPropertyAnimatorCompat.translationY(0); viewPropertyAnimatorCompat.setInterpolator(new DecelerateInterpolator()); viewPropertyAnimatorCompat.start(); if (materialHeadView != null) { materialHeadView.onComlete(MaterialRefreshLayout.this); } if (refreshListener != null) { refreshListener.onfinish(); } } isRefreshing = false; progressValue = 0; setProgressValue(0); }
@Override public void call(final CompletableSubscriber completableSubscriber) { final View view = viewWeakRef.get(); if (view == null) { completableSubscriber.onCompleted(); return; } final ViewPropertyAnimatorCompat animator = ViewCompat.animate(view); completableSubscriber.onSubscribe(createClearSubscription(animator)); if (preTransformActions != null) { applyActions(preTransformActions, animator); animator.setDuration(NONE).setStartDelay(NONE) .withEndAction(() -> runAnimation(completableSubscriber, animator)) .start(); } else { runAnimation(completableSubscriber, animator); } }
public void finishRefreshing() { if (mChildView != null) { ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = ViewCompat.animate(mChildView); viewPropertyAnimatorCompat.setDuration(200); viewPropertyAnimatorCompat.y(ViewCompat.getTranslationY(mChildView)); viewPropertyAnimatorCompat.translationY(0); viewPropertyAnimatorCompat.setInterpolator(new DecelerateInterpolator()); viewPropertyAnimatorCompat.start(); if (mMaterialHeaderView != null) { mMaterialHeaderView.onComlete(MaterialRefreshLayout.this); } else if (mSunLayout != null) { mSunLayout.onComlete(MaterialRefreshLayout.this); } if (refreshListener != null) { refreshListener.onfinish(); } } isRefreshing = false; progressValue = 0; }
public final void start() { if (this.mIsStarted) { return; } Iterator localIterator = this.mAnimators.iterator(); while (localIterator.hasNext()) { ViewPropertyAnimatorCompat localViewPropertyAnimatorCompat = (ViewPropertyAnimatorCompat)localIterator.next(); if (this.mDuration >= 0L) { localViewPropertyAnimatorCompat.setDuration(this.mDuration); } if (this.mInterpolator != null) { localViewPropertyAnimatorCompat.setInterpolator(this.mInterpolator); } if (this.mListener != null) { localViewPropertyAnimatorCompat.setListener(this.mProxyListener); } localViewPropertyAnimatorCompat.start(); } this.mIsStarted = true; }
public ViewPropertyAnimatorCompat setupAnimatorToVisibility(int paramInt, long paramLong) { if (this.mVisibilityAnim != null) { this.mVisibilityAnim.cancel(); } if (paramInt == 0) { if (getVisibility() != 0) { ViewCompat.setAlpha(this, 0.0F); } ViewPropertyAnimatorCompat localViewPropertyAnimatorCompat2 = ViewCompat.animate(this).alpha(1.0F); localViewPropertyAnimatorCompat2.setDuration(paramLong); localViewPropertyAnimatorCompat2.setListener(this.mVisAnimListener.withFinalVisibility(localViewPropertyAnimatorCompat2, paramInt)); return localViewPropertyAnimatorCompat2; } ViewPropertyAnimatorCompat localViewPropertyAnimatorCompat1 = ViewCompat.animate(this).alpha(0.0F); localViewPropertyAnimatorCompat1.setDuration(paramLong); localViewPropertyAnimatorCompat1.setListener(this.mVisAnimListener.withFinalVisibility(localViewPropertyAnimatorCompat1, paramInt)); return localViewPropertyAnimatorCompat1; }
public void finishRefreshing() { if (mChildView != null) { ViewPropertyAnimatorCompat viewPropertyAnimatorCompat = ViewCompat.animate(mChildView); viewPropertyAnimatorCompat.setDuration(200); viewPropertyAnimatorCompat.y(ViewCompat.getTranslationY(mChildView)); viewPropertyAnimatorCompat.translationY(0); viewPropertyAnimatorCompat.setInterpolator(new DecelerateInterpolator()); viewPropertyAnimatorCompat.start(); if (materialHeadView != null) { materialHeadView.onComlete(PulltoRefreshLayout.this); } if (refreshListener != null) { refreshListener.onfinish(); } } isRefreshing = false; progressValue = 0; setProgressValue(0); }
public void animateToMode(boolean flag) { ViewPropertyAnimatorCompat viewpropertyanimatorcompat; ViewPropertyAnimatorCompat viewpropertyanimatorcompat1; ViewPropertyAnimatorCompatSet viewpropertyanimatorcompatset; if (flag) { showForActionMode(); } else { hideForActionMode(); } if (flag) { viewpropertyanimatorcompat1 = mDecorToolbar.setupAnimatorToVisibility(8, 100L); viewpropertyanimatorcompat = mContextView.setupAnimatorToVisibility(0, 200L); } else { viewpropertyanimatorcompat = mDecorToolbar.setupAnimatorToVisibility(0, 200L); viewpropertyanimatorcompat1 = mContextView.setupAnimatorToVisibility(8, 100L); } viewpropertyanimatorcompatset = new ViewPropertyAnimatorCompatSet(); viewpropertyanimatorcompatset.playSequentially(viewpropertyanimatorcompat1, viewpropertyanimatorcompat); viewpropertyanimatorcompatset.start(); }
public ViewPropertyAnimatorCompat setupAnimatorToVisibility(int i, long l) { if (mVisibilityAnim != null) { mVisibilityAnim.cancel(); } if (i == 0) { if (getVisibility() != 0) { ViewCompat.setAlpha(this, 0.0F); } ViewPropertyAnimatorCompat viewpropertyanimatorcompat = ViewCompat.animate(this).alpha(1.0F); viewpropertyanimatorcompat.setDuration(l); viewpropertyanimatorcompat.setListener(mVisAnimListener.withFinalVisibility(viewpropertyanimatorcompat, i)); return viewpropertyanimatorcompat; } else { ViewPropertyAnimatorCompat viewpropertyanimatorcompat1 = ViewCompat.animate(this).alpha(0.0F); viewpropertyanimatorcompat1.setDuration(l); viewpropertyanimatorcompat1.setListener(mVisAnimListener.withFinalVisibility(viewpropertyanimatorcompat1, i)); return viewpropertyanimatorcompat1; } }
Observable<ViewPropertyAnimatorCompat> executeForNewHolder(AnimationTask.AnimationEvent animationEvent) { final Option<RecyclerView.ViewHolder> newHolder = animationEvent.getEvent().getSecondaryHolder(); if (newHolder.bind(h -> Option.fromNull(h.itemView)).isNone() || animationEvent.getPreStateOption().isNone()) { return Observable.empty(); } final RecyclerView.ViewHolder holder = newHolder.some(); final SimpleItemAnimator.Event event = animationEvent.getEvent(); final F<Unit, P1<Unit>> startDispatcher = startDispatcherSelectorForNewHolder(holder); final F<Unit, P1<Unit>> finishDispatcher = finishDispatcherSelectorForNewHolder(holder); final F<View, Unit> defaultStateSetter = (animationEvent.getPreStateOption().some()::restoreState); final ViewPropertyAnimatorCompat animator = createAnimatorForNewHolder(holder.itemView, event.getParam()).setDuration(duration(event.getParam().getEventType())); return create( true, startDispatcher, finishDispatcher, defaultStateSetter, animator); }
private SimpleItemAnimator( final F<ViewPropertyAnimatorCompat, ViewPropertyAnimatorCompat> addEventAnimation, final F<ViewPropertyAnimatorCompat, ViewPropertyAnimatorCompat> removeEventAnimation, final F2<ViewPropertyAnimatorCompat, EventParam, ViewPropertyAnimatorCompat> moveEventAnimation, final Option<F2<ViewPropertyAnimatorCompat, EventParam, ViewPropertyAnimatorCompat>> changeEventAnimationForOldView, final Option<F2<ViewPropertyAnimatorCompat, EventParam, ViewPropertyAnimatorCompat>> changeEventAnimationForNewView, final boolean isChangeEventMix, final F<View, Unit> prepareAddEventView, final F<View, Unit> prepareRemoveEventView, final F2<View, EventParam, Unit> prepareMoveEventView, final F3<View, Option<View>, EventParam, Unit> prepareChangeEventView) { this.addEventAnimation = addEventAnimation; this.removeEventAnimation = removeEventAnimation; this.moveEventAnimation = moveEventAnimation; this.changeEventAnimationForOldView = changeEventAnimationForOldView.toNull(); this.changeEventAnimationForNewView = changeEventAnimationForNewView.toNull(); final Boolean supportChange = changeEventAnimationForOldView.bind(cfo -> changeEventAnimationForNewView.map(cfn -> true)).orSome(false); setSupportsChangeAnimations(supportChange); this.changeEventMix = isChangeEventMix; this.prepareAddEventView = prepareAddEventView; this.prepareRemoveEventView = prepareRemoveEventView; this.prepareMoveEventView = prepareMoveEventView; this.prepareChangeEventView = prepareChangeEventView; }
/** * アニメーション実行命令を出して返す * * @return cancelを可能とするために {@link android.support.v4.view.ViewPropertyAnimatorCompat} を返す */ protected Observable<ViewPropertyAnimatorCompat> defaultExecute( @Nonnull final AnimationTask.AnimationEvent animationEvent) { final SimpleItemAnimator.Event event = animationEvent.getEvent(); final F<Unit, P1<Unit>> startDispatcher = startDispatcherSelector(event); final F<Unit, P1<Unit>> finishDispatcher = finishDispatcherSelector(event); final F<View, Unit> defaultStateSetter = (animationEvent.getPreState()::restoreState); final SimpleItemAnimator.EventType eventType = event.getParam().getEventType(); final ViewPropertyAnimatorCompat animator = createAnimator(event).setDuration(duration(eventType)); return create( eventType == SimpleItemAnimator.EventType.ADD || eventType == SimpleItemAnimator.EventType.MOVE, startDispatcher, finishDispatcher, defaultStateSetter, animator); }
/** Preform your animation. You do not need to override this in most cases cause the default is pretty good. * Listeners will be overridden **/ protected ViewPropertyAnimatorCompat animateMoveImpl(final ViewHolder holder, int fromX, int fromY, int toX, int toY) { final View view = holder.itemView; final int deltaX = toX - fromX; final int deltaY = toY - fromY; ViewCompat.animate(view).cancel(); if (deltaX != 0) { ViewCompat.animate(view).translationX(0); } if (deltaY != 0) { ViewCompat.animate(view).translationY(0); } // TODO: make EndActions end listeners instead, since end actions aren't called when // vpas are canceled (and can't end them. why?) // need listener functionality in VPACompat for this. Ick. return ViewCompat.animate(view).setInterpolator(null).setDuration(getMoveDuration()); }
private ViewPropertyAnimatorCompat displayWarning(boolean visible){ setVisibility(View.GONE,llaForm); setVisibility(visible ? View.VISIBLE : View.INVISIBLE,tviWarning,btnUnderstood); return ViewCompat.animate(btnUnderstood) .scaleX(visible ? 1.0f : 0.0f) .setStartDelay(500); }
@Override protected ViewPropertyAnimatorCompat animateRemoveImpl(ViewHolder holder) { return ViewCompat.animate(holder.itemView) .rotationY(90) .translationX(-(holder.itemView.getMeasuredWidth() / 4)) .scaleX(0.5F) .scaleY(0.5F) .setInterpolator(new AccelerateInterpolator()); }
@Override protected ViewPropertyAnimatorCompat animateAddImpl(ViewHolder holder) { return ViewCompat.animate(holder.itemView) .rotationY(0) .translationX(0) .setInterpolator(new BounceInterpolator()); }
@Override protected ViewPropertyAnimatorCompat animateRemoveImpl(ViewHolder holder) { Point screen = Utils.getScreenDimensions(holder.itemView.getContext()); int top = holder.itemView.getTop(); return ViewCompat.animate(holder.itemView) .rotation(80) .translationY(screen.y - top) .setInterpolator(new AccelerateInterpolator()); }
protected ViewPropertyAnimatorCompat animateRemoveImpl(ViewHolder holder) { final View view = holder.itemView; ViewCompat.animate(view).cancel(); return ViewCompat.animate(view) .translationX(Utils.getScreenDimensions(holder.itemView.getContext()).x) .setInterpolator(new AnticipateOvershootInterpolator()); }
protected ViewPropertyAnimatorCompat animateAddImpl(ViewHolder holder) { final View view = holder.itemView; ViewCompat.animate(view).cancel(); int width = getWidth(holder); return ViewCompat.animate(view) .translationXBy(-width) .setInterpolator(new BounceInterpolator()); }
private AnimateCompletable(final WeakReference<View> viewWeakRef, @Nullable final List<Consumer<ViewPropertyAnimatorCompat>> preTransformActions, final List<Consumer<ViewPropertyAnimatorCompat>> animationActions, final Consumer<View> onAnimationCancelAction) { this.viewWeakRef = viewWeakRef; this.preTransformActions = preTransformActions; this.animationActions = animationActions; this.onAnimationCancelAction = onAnimationCancelAction; }
private void applyActions(final List<Consumer<ViewPropertyAnimatorCompat>> actions, final ViewPropertyAnimatorCompat animator) { for (final Consumer<ViewPropertyAnimatorCompat> action : actions) { try { action.accept(animator); } catch (Exception e) { e.printStackTrace(); } } }
/** * @param animate whether to animate the change * @return this, to allow builder pattern */ public BadgeItem show(boolean animate) { mIsHidden = false; if (isWeakReferenceValid()) { TextView textView = mTextViewRef.get(); if (animate) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { textView.setScaleX(0); textView.setScaleY(0); } textView.setVisibility(View.VISIBLE); ViewPropertyAnimatorCompat animatorCompat = ViewCompat.animate(textView); animatorCompat.cancel(); animatorCompat.setDuration(mAnimationDuration); animatorCompat.scaleX(1).scaleY(1); animatorCompat.setListener(null); animatorCompat.start(); } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { textView.setScaleX(1); textView.setScaleY(1); } textView.setVisibility(View.VISIBLE); } } return this; }
@Override public void onBindRadioGroupedViewHolder(SecondViewHolder holder, int position, List<Object> payloads) { { setDefaults(holder, position); } { MyPayload payload = null; for (Object itrPayload : payloads) { if (itrPayload != null && itrPayload instanceof MyPayload) { payload = (MyPayload) itrPayload; break; } } if (payload != null) { ViewPropertyAnimatorCompat animator = ViewCompat .animate(holder.getIcon()) .setInterpolator(new LinearOutSlowInInterpolator()) .setDuration(500); int diff = payload.calcDiffY(); if (diff == 0) { ViewCompat.setTranslationX(holder.getIcon(), holder.getIcon().getMeasuredWidth() * -1); animator = animator .translationX(0); } else { ViewCompat.setTranslationY(holder.getIcon(), diff); animator = animator .translationY(0); } animator.start(); } } }