@Override public float getInterpolation(float input) { if (input <= mDelayFraction) { return 0f; } final float adjustedInput = (input - mDelayFraction) / (1 - mDelayFraction); return mOriginal.getInterpolation(adjustedInput); } }
@Override public synchronized float getInterpolation(float input) { if (fractions.length > 1) { for (int i = 0; i < fractions.length - 1; i++) { float start = fractions[i]; float end = fractions[i + 1]; float duration = end - start; if (input >= start && input <= end) { input = (input - start) / duration; return start + (interpolator.getInterpolation(input) * duration); } } } return interpolator.getInterpolation(input); } }
@Override public float getInterpolation(float input) { return mWrappedInterpolator.getInterpolation(Math.abs(input - 1f)); } }
@Override protected float calculateValue(long frameTimeNanos) { float timingValue = getInput(DEFAULT_INPUT).getValue(); return mInterpolator.getInterpolation(timingValue); } }
static float getAnimatedFraction(ValueAnimator animator) { float fraction = animator.getDuration() > 0 ? ((float) animator.getCurrentPlayTime()) / animator.getDuration() : 0f; fraction = min(fraction, 1f); fraction = animator.getInterpolator().getInterpolation(fraction); return fraction; } }
private float getItemFactor(int index, float factor) { float itemFactor = (factor - 0.66f / POINT_NUM * index) * 3; if (itemFactor < 0f) { itemFactor = 0f; } else if (itemFactor > 1f) { itemFactor = 1f; } return mInterpolator.getInterpolation(itemFactor); }
/** * * * * @param circleView the circle view * @return false if animation still running, true if animation is finished. */ private boolean calcNextAnimationValue(CircleProgressView circleView) { float t = (float) ((System.currentTimeMillis() - mAnimationStartTime) / circleView.mAnimationDuration); t = t > 1.0f ? 1.0f : t; float interpolatedRatio = mInterpolator.getInterpolation(t); circleView.mCurrentValue = (circleView.mValueFrom + ((circleView.mValueTo - circleView.mValueFrom) * interpolatedRatio)); return t >= 1; }
@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(); } } }
/ mLengthChangeAnimationDuration); t = t > 1.0f ? 1.0f : t; float interpolatedRatio = mLengthChangeInterpolator.getInterpolation(t); / mLengthChangeAnimationDuration); t = t > 1.0f ? 1.0f : t; float interpolatedRatio = mLengthChangeInterpolator.getInterpolation(t); circleView.mSpinningBarLengthCurrent = (mSpinningBarLengthStart) * (1f - interpolatedRatio); / mLengthChangeAnimationDuration); t = t > 1.0f ? 1.0f : t; float interpolatedRatio = mLengthChangeInterpolator.getInterpolation(t); circleView.mSpinningBarLengthCurrent = (mSpinningBarLengthStart) * (1f - interpolatedRatio); / mLengthChangeAnimationDuration); t = t > 1.0f ? 1.0f : t; float interpolatedRatio = mLengthChangeInterpolator.getInterpolation(t); circleView.mSpinningBarLengthCurrent = (mSpinningBarLengthStart) * (1f - interpolatedRatio);
private void createData() { dataList.clear(); for (float x = 0; x <= 1; x += 1.0f / FRAME) { float y = mInterpolator.getInterpolation(x); PointF pointF = new PointF(x, y); dataList.add(pointF); } }
/** * 绘制drawable的alpha值 * * @param fraction * @return */ private float drawAlpah(float fraction) { fraction = mAlphaTimeInterpolator.getInterpolation(fraction); return mAlphaEvaluator.evaluate(fraction, this.alpha, 0.0f); }
/** * 获取对应动画插值的valueR */ private float getInterpolatorValue(float input) { return getInterpolator().getInterpolation(input); }
/** * 绘制drawable的缩放 * * @param fraction * @return */ private float drawScale(float fraction) { float newFraction = 4.50f * fraction; fraction = newFraction > 1 ? 1 : newFraction; fraction = mScaleTimeInterpolator.getInterpolation(fraction); return mScaleEvaluator.evaluate(fraction, 0.0f, this.scale); }
/** * 绘制drawable每一帧的移动位置 * * @param fraction * @param start * @param end * @return */ private PointF drawFrame(float fraction, PointF start, PointF end) { fraction = mFrameTimeInterpolator.getInterpolation(fraction); return xFrameEvaluator.evaluate(fraction, start, end); }
@Override public void onAnimationUpdate(ValueAnimator animation) { float t = ((Float) animation.getAnimatedValue()).floatValue(); long curTime = AnimationUtils.currentAnimationTimeMillis(); mFrom.left += (mVelocity.x * (curTime - mPrevTime) / 1000f); mFrom.top += (mVelocity.y * (curTime - mPrevTime) / 1000f); mDragView.setTranslationX(mFrom.left); mDragView.setTranslationY(mFrom.top); mDragView.setAlpha(1f - mAlphaInterpolator.getInterpolation(t)); mVelocity.x *= mFriction; mVelocity.y *= mFriction; mPrevTime = curTime; } }
@Override public void onAnimationUpdate(ValueAnimator animation) { float x = animation.getAnimatedFraction(); float y = mInterpolator.getInterpolation(x); curPoint.x = x; curPoint.y = y; Log.i("zincTest", "onAnimationUpdate: [" + x + "," + y + "】"); mTimeInterpolatorView.setCurPoint(curPoint); } });
/** * Takes the value of {@link #getLinearCurrentAnimationFraction(Animation)} and interpolates it * with the current animation's interpolator. */ private float getInterpolatedCurrentAnimationFraction(Animation<?, V> animation) { TimeInterpolator interpolator = animation.getInterpolator(); if (interpolator == null) { interpolator = DEFAULT_INTERPOLATOR; } return interpolator.getInterpolation(getLinearCurrentAnimationFraction(animation)); }
x = viscousFluid(x); else x = mInterpolator.getInterpolation(x);
x = viscousFluid(x); else x = mInterpolator.getInterpolation(x);
static float getAnimatedFraction(ValueAnimator animator) { float fraction = animator.getDuration() > 0 ? ((float) animator.getCurrentPlayTime()) / animator.getDuration() : 0f; fraction = min(fraction, 1f); fraction = animator.getInterpolator().getInterpolation(fraction); return fraction; } }