DimensionUpdateListener(@NonNull View view) { this.view = view; intEvaluator = new IntEvaluator(); }
@Override public void onAnimationUpdate(ValueAnimator animation) { if (view.getLayoutParams() != null) { ViewGroup.LayoutParams layoutParams = view.getLayoutParams(); TimeInterpolator interpolator = animation.getInterpolator(); float fraction = animation.getAnimatedFraction(); int preWidth = layoutParams.width; int preHeight = layoutParams.height; if (width != null) { layoutParams.width = intEvaluator.evaluate(interpolator.getInterpolation(fraction), width.first, width.second); } if (height != null) { layoutParams.height = intEvaluator.evaluate(interpolator.getInterpolation(fraction), height.first, height.second); } if (preHeight != layoutParams.height || preWidth != layoutParams.width) { view.requestLayout(); } } }
private void collapseView(final View selectedView) { selectedView.setBackgroundResource(unselectedLineDrawableResource); if (collapseAnimator != null) { collapseAnimator.end(); } collapseAnimator = ValueAnimator.ofObject(new IntEvaluator(), lineWidthSelected, lineWidth); collapseAnimator.setInterpolator(new DecelerateInterpolator()); collapseAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) selectedView.getLayoutParams(); layoutParams.width = (int) animation.getAnimatedValue(); selectedView.setLayoutParams(layoutParams); } }); collapseAnimator.setDuration(500); collapseAnimator.start(); }
@Override public Integer evaluate(float fraction, Integer startValue, Integer endValue) { Integer num = super.evaluate(fraction, startValue, endValue); ViewGroup.LayoutParams params = mView.getLayoutParams(); params.width = num; mView.setLayoutParams(params); return num; } }
private void expandView(final View selectedView) { selectedView.setBackgroundResource(selectedLineDrawableResource); if (expandAnimator != null) { expandAnimator.end(); } expandAnimator = ValueAnimator.ofObject(new IntEvaluator(), lineWidth, lineWidthSelected); expandAnimator.setInterpolator(new DecelerateInterpolator()); expandAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) selectedView.getLayoutParams(); layoutParams.width = (int) animation.getAnimatedValue(); selectedView.setLayoutParams(layoutParams); } }); expandAnimator.setDuration(200); expandAnimator.start(); }
@Override public Integer evaluate(float fraction, Integer startValue, Integer endValue) { Integer num = super.evaluate(fraction, startValue, endValue); ViewGroup.LayoutParams params = mView.getLayoutParams(); params.height = num; mView.setLayoutParams(params); return num; } }
private PropertyValuesHolder createSlidePropertyHolder() { PropertyValuesHolder holder = PropertyValuesHolder.ofInt(ANIMATION_COORDINATE, coordinateStart, coordinateEnd); holder.setEvaluator(new IntEvaluator()); return holder; }
@Override public void onAnimationUpdate(ValueAnimator valueAnimator) { ViewGroup.LayoutParams lp = moveView.getLayoutParams(); lp.width = mEvaluator.evaluate(valueAnimator.getAnimatedFraction(), mOldWidth, mNewWidth); lp.height = mEvaluator.evaluate(valueAnimator.getAnimatedFraction(), mOldHeight, mNewHeight); moveView.setLayoutParams(lp); moveView.requestLayout(); } });
private PropertyValuesHolder createColorPropertyHolder(String propertyName, int startValue, int endValue) { PropertyValuesHolder holder = PropertyValuesHolder.ofInt(propertyName, startValue, endValue); holder.setEvaluator(new IntEvaluator()); return holder; }
@Override public void onAnimationUpdate(ValueAnimator valueAnimator) { ViewGroup.LayoutParams lp = moveView.getLayoutParams(); lp.width = mEvaluator.evaluate(valueAnimator.getAnimatedFraction(), mOldWidth, mNewWidth); lp.height = mEvaluator.evaluate(valueAnimator.getAnimatedFraction(), mOldHeight, mNewHeight); moveView.setLayoutParams(lp); moveView.requestLayout(); } });
@NonNull private PropertyValuesHolder createRadiusPropertyHolder(boolean isReverse) { String propertyName; int startRadiusValue; int endRadiusValue; if (isReverse) { propertyName = ANIMATION_RADIUS_REVERSE; startRadiusValue = radius / 2; endRadiusValue = radius; } else { propertyName = ANIMATION_RADIUS; startRadiusValue = radius; endRadiusValue = radius / 2; } PropertyValuesHolder holder = PropertyValuesHolder.ofInt(propertyName, startRadiusValue, endRadiusValue); holder.setEvaluator(new IntEvaluator()); return holder; }
@NonNull protected PropertyValuesHolder createScalePropertyHolder(boolean isReverse) { String propertyName; int startRadiusValue; int endRadiusValue; if (isReverse) { propertyName = ANIMATION_SCALE_REVERSE; startRadiusValue = radius; endRadiusValue = (int) (radius * scaleFactor); } else { propertyName = ANIMATION_SCALE; startRadiusValue = (int) (radius * scaleFactor); endRadiusValue = radius; } PropertyValuesHolder holder = PropertyValuesHolder.ofInt(propertyName, startRadiusValue, endRadiusValue); holder.setEvaluator(new IntEvaluator()); return holder; }
@NonNull private PropertyValuesHolder createStrokePropertyHolder(boolean isReverse) { String propertyName; int startStrokeValue; int endStrokeValue; if (isReverse) { propertyName = ANIMATION_STROKE_REVERSE; startStrokeValue = radius; endStrokeValue = 0; } else { propertyName = ANIMATION_STROKE; startStrokeValue = 0; endStrokeValue = radius; } PropertyValuesHolder holder = PropertyValuesHolder.ofInt(propertyName, startStrokeValue, endStrokeValue); holder.setEvaluator(new IntEvaluator()); return holder; }
@NonNull @Override protected PropertyValuesHolder createScalePropertyHolder(boolean isReverse) { String propertyName; int startRadiusValue; int endRadiusValue; if (isReverse) { propertyName = ANIMATION_SCALE_REVERSE; startRadiusValue = (int) (radius * scaleFactor); endRadiusValue = radius; } else { propertyName = ANIMATION_SCALE; startRadiusValue = radius; endRadiusValue = (int) (radius * scaleFactor); } PropertyValuesHolder holder = PropertyValuesHolder.ofInt(propertyName, startRadiusValue, endRadiusValue); holder.setEvaluator(new IntEvaluator()); return holder; } }
executeEnterAnimation = false; ValueAnimator timeDay = ValueAnimator.ofObject(new IntEvaluator(), startTimes[0], currentTimes[0]); timeDay.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override new IntEvaluator(), 0, (int) (totalRotationDay - totalRotationDay % 360)); rotateDay.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override attachAnimatorSets[0].start(); ValueAnimator timeNight = ValueAnimator.ofObject(new IntEvaluator(), startTimes[1], currentTimes[1]); timeNight.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override new IntEvaluator(), 0, (int) (totalRotationNight - totalRotationNight % 360)); rotateNight.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override ValueAnimator moonAngle = ValueAnimator.ofObject(new IntEvaluator(), 0, phaseAngle); moonAngle.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override
ValueAnimator aqiNumber = ValueAnimator.ofObject(new IntEvaluator(), 0, weather.aqi.aqi); aqiNumber.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override