use of com.nineoldandroids.animation.ValueAnimator in project Carbon by ZieIony.
the class CollapsingToolbarLayout method startReveal.
@Override
public Animator startReveal(int x, int y, float startRadius, float finishRadius) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
android.animation.Animator circularReveal = ViewAnimationUtils.createCircularReveal(this, x, y, startRadius, finishRadius);
circularReveal.start();
return new Animator() {
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public long getStartDelay() {
return circularReveal.getStartDelay();
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void setStartDelay(long startDelay) {
circularReveal.setStartDelay(startDelay);
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public Animator setDuration(long duration) {
circularReveal.setDuration(duration);
return this;
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public long getDuration() {
return circularReveal.getDuration();
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void setInterpolator(Interpolator value) {
circularReveal.setInterpolator(value);
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public boolean isRunning() {
return circularReveal.isRunning();
}
};
} else {
reveal = new Reveal(x, y, startRadius);
ValueAnimator animator = ValueAnimator.ofFloat(startRadius, finishRadius);
animator.setDuration(Carbon.getDefaultRevealDuration());
animator.addUpdateListener(animation -> {
reveal.radius = (float) animation.getAnimatedValue();
reveal.mask.reset();
reveal.mask.addCircle(reveal.x, reveal.y, Math.max(reveal.radius, 1), Path.Direction.CW);
postInvalidate();
});
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
reveal = null;
}
@Override
public void onAnimationEnd(Animator animation) {
reveal = null;
}
});
animator.start();
return animator;
}
}
use of com.nineoldandroids.animation.ValueAnimator in project Carbon by ZieIony.
the class Button method setVisibility.
public void setVisibility(final int visibility) {
if (visibility == View.VISIBLE && (getVisibility() != View.VISIBLE || animator != null)) {
if (animator != null)
animator.cancel();
if (inAnim != AnimUtils.Style.None) {
animator = AnimUtils.animateIn(this, inAnim, new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator a) {
animator = null;
clearAnimation();
}
});
}
super.setVisibility(visibility);
} else if (visibility != View.VISIBLE && (getVisibility() == View.VISIBLE || animator != null)) {
if (animator != null)
animator.cancel();
if (outAnim == AnimUtils.Style.None) {
super.setVisibility(visibility);
return;
}
animator = AnimUtils.animateOut(this, outAnim, new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator a) {
if (((ValueAnimator) a).getAnimatedFraction() == 1)
Button.super.setVisibility(visibility);
animator = null;
clearAnimation();
}
});
}
}
use of com.nineoldandroids.animation.ValueAnimator in project Carbon by ZieIony.
the class BottomBar method deselectItem.
private void deselectItem(final View item) {
final ImageView icon = (ImageView) item.findViewById(R.id.carbon_bottomIcon);
icon.setSelected(false);
final TextView text = (TextView) item.findViewById(R.id.carbon_bottomText);
text.setSelected(false);
ValueAnimator animator = ValueAnimator.ofFloat(getResources().getDimension(R.dimen.carbon_bottomBarActiveTextSize) / getResources().getDimension(R.dimen.carbon_bottomBarInactiveTextSize), 1);
animator.setDuration(200);
animator.setInterpolator(new DecelerateInterpolator());
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
text.setScaleX((Float) animation.getAnimatedValue());
text.setScaleY((Float) animation.getAnimatedValue());
text.postInvalidate();
}
});
animator.start();
ValueAnimator animator2 = ValueAnimator.ofFloat(-getResources().getDimension(R.dimen.carbon_1dip) * 2, 0);
animator2.setDuration(200);
animator2.setInterpolator(new DecelerateInterpolator());
animator2.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
icon.setTranslationY((Float) animation.getAnimatedValue());
icon.postInvalidate();
}
});
animator2.start();
}
use of com.nineoldandroids.animation.ValueAnimator in project Carbon by ZieIony.
the class DefaultItemAnimator method animateChangeImpl.
private void animateChangeImpl(final ChangeInfo changeInfo) {
final RecyclerView.ViewHolder holder = changeInfo.oldHolder;
final View view = holder == null ? null : holder.itemView;
final RecyclerView.ViewHolder newHolder = changeInfo.newHolder;
final View newView = newHolder != null ? newHolder.itemView : null;
if (view != null) {
final ValueAnimator oldViewAnim = ValueAnimator.ofFloat(0, 1);
oldViewAnim.setDuration(getChangeDuration());
mChangeAnimations.add(changeInfo.oldHolder);
final float startAlpha = ViewHelper.getAlpha(view);
final float startX = ViewHelper.getTranslationX(view);
final float startY = ViewHelper.getTranslationY(view);
oldViewAnim.addUpdateListener(animation -> {
ViewHelper.setAlpha(view, MathUtils.lerp(startAlpha, 0, (Float) animation.getAnimatedValue()));
ViewHelper.setTranslationX(view, MathUtils.lerp(startX, changeInfo.toX - changeInfo.fromX, (Float) animation.getAnimatedValue()));
ViewHelper.setTranslationY(view, MathUtils.lerp(startY, changeInfo.toY - changeInfo.fromY, (Float) animation.getAnimatedValue()));
});
oldViewAnim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
dispatchChangeStarting(changeInfo.oldHolder, true);
}
@Override
public void onAnimationEnd(Animator animation) {
dispatchChangeFinished(changeInfo.oldHolder, true);
mChangeAnimations.remove(changeInfo.oldHolder);
dispatchFinishedWhenDone();
}
});
oldViewAnim.start();
}
if (newView != null) {
final ValueAnimator newViewAnimation = ValueAnimator.ofFloat(0, 1);
mChangeAnimations.add(changeInfo.newHolder);
newViewAnimation.setDuration(getChangeDuration());
final float startAlpha = ViewHelper.getAlpha(newView);
final float startX = ViewHelper.getTranslationX(newView);
final float startY = ViewHelper.getTranslationY(newView);
newViewAnimation.addUpdateListener(animation -> {
ViewHelper.setAlpha(newView, MathUtils.lerp(startAlpha, 1, (Float) animation.getAnimatedValue()));
ViewHelper.setTranslationX(newView, MathUtils.lerp(startX, 0, (Float) animation.getAnimatedValue()));
ViewHelper.setTranslationY(newView, MathUtils.lerp(startY, 0, (Float) animation.getAnimatedValue()));
});
newViewAnimation.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
dispatchChangeStarting(changeInfo.newHolder, false);
}
@Override
public void onAnimationEnd(Animator animation) {
dispatchChangeFinished(changeInfo.newHolder, false);
mChangeAnimations.remove(changeInfo.newHolder);
dispatchFinishedWhenDone();
}
});
newViewAnimation.start();
}
}
use of com.nineoldandroids.animation.ValueAnimator in project Carbon by ZieIony.
the class ConstraintLayout method startReveal.
@Override
public Animator startReveal(int x, int y, float startRadius, float finishRadius) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) {
android.animation.Animator circularReveal = ViewAnimationUtils.createCircularReveal(this, x, y, startRadius, finishRadius);
circularReveal.start();
return new Animator() {
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public long getStartDelay() {
return circularReveal.getStartDelay();
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void setStartDelay(long startDelay) {
circularReveal.setStartDelay(startDelay);
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public Animator setDuration(long duration) {
circularReveal.setDuration(duration);
return this;
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public long getDuration() {
return circularReveal.getDuration();
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public void setInterpolator(Interpolator value) {
circularReveal.setInterpolator(value);
}
@Override
@RequiresApi(api = Build.VERSION_CODES.HONEYCOMB)
public boolean isRunning() {
return circularReveal.isRunning();
}
};
} else {
reveal = new Reveal(x, y, startRadius);
ValueAnimator animator = ValueAnimator.ofFloat(startRadius, finishRadius);
animator.setDuration(Carbon.getDefaultRevealDuration());
animator.addUpdateListener(animation -> {
reveal.radius = (float) animation.getAnimatedValue();
reveal.mask.reset();
reveal.mask.addCircle(reveal.x, reveal.y, Math.max(reveal.radius, 1), Path.Direction.CW);
postInvalidate();
});
animator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationCancel(Animator animation) {
reveal = null;
}
@Override
public void onAnimationEnd(Animator animation) {
reveal = null;
}
});
animator.start();
return animator;
}
}
Aggregations