public MatrixEvaluator() { current = new Matrix(); floatEvaluator = new FloatEvaluator(); }
@Override public Matrix evaluate(float fraction, Matrix startValue, Matrix endValue) { if (shouldReinitialize(startValue, endValue)) { collectValues(startValue, endValue); } float translationX = floatEvaluator.evaluate(fraction, initialTranslationX, endTranslationX); float translationY = floatEvaluator.evaluate(fraction, initialTranslationY, endTranslationY); float scale = floatEvaluator.evaluate(fraction, initialScale, endScale); current.reset(); current.postScale(scale, scale); current.postTranslate(translationX, translationY); return current; }
private void createSmallWawe(float centerX, float centerY) { float fraction = 0.2f; FloatEvaluator evaluator = new FloatEvaluator(); Point rightControll = new Point(evaluator.evaluate(fraction, centerX, centerX * 1.45), centerY); Point rightPoint = new Point(evaluator.evaluate(fraction, centerX * 0.95, centerX), evaluator.evaluate(fraction, centerY * 0.35 * 1.5, centerY)); Wawe wawe = createWawe( rightControll, //right controll new Point(rightControll.x - gap * 0.45f, centerY), //left controll rightPoint, //right point new Point(rightPoint.x - gap * 0.7f, rightPoint.y), //left point new Point(rightPoint.x - gap * 0.4f, rightPoint.y - gap * 0.6f), //top right controll new Point(rightPoint.x - gap * 0.9f, rightPoint.y - gap * 0.4f) //top left controll ); wawes.put(0, wawe); }
private void createBigWawe(float centerX, float centerY) { float fraction = 0.2f; FloatEvaluator evaluator = new FloatEvaluator(); Point rightControll = new Point(evaluator.evaluate(fraction, centerX, centerX * 1.45), centerY); Point rightPoint = new Point(evaluator.evaluate(fraction, centerX * 0.95, centerX), evaluator.evaluate(fraction, centerY * 0.35, centerY)); Wawe wawe = createWawe( rightControll, //right controll new Point(rightControll.x - gap * 0.45f, centerY), //left controll rightPoint, //right point new Point(rightPoint.x - gap * 0.7f, rightPoint.y), //left point new Point(rightPoint.x - gap * 0.4f, rightPoint.y - gap * 0.6f), //top right controll new Point(rightPoint.x - gap * 0.9f, rightPoint.y - gap * 0.4f) //top left controll ); wawes.put(1, wawe); }
public static ObjectAnimator toAlphaOne(View view, int duration) { ObjectAnimator objectAnimator = ObjectAnimator.ofObject(view, "alpha", new FloatEvaluator(), 0.0f, 1.0f); objectAnimator.setDuration(duration); return objectAnimator; }
/** * 绘制drawable的alpha值 * * @param fraction * @return */ private float drawAlpah(float fraction) { fraction = mAlphaTimeInterpolator.getInterpolation(fraction); return mAlphaEvaluator.evaluate(fraction, this.alpha, 0.0f); }
public static ObjectAnimator toAlphaZero(View view, int duration) { ObjectAnimator objectAnimator = ObjectAnimator.ofObject(view, "alpha", new FloatEvaluator(), 1.0f, 0f); objectAnimator.setDuration(duration); return objectAnimator; }
/** * 绘制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); }
public PraiseDrawable(@NonNull Bitmap bitmap, float scale, float alpha, long duration, long delay, long delayAphaAnimTime, float endYPercentage) { mMatrix = new Matrix(); mPaint = new Paint(); this.bitmap = bitmap; this.endYPercentage = Math.min(Math.max(0, endYPercentage), 1); /** * params * */ this.scale = scale; this.alpha = alpha; this.duration = duration; this.startDelay = delay; this.delayAphaAnimTime = delayAphaAnimTime; bitmapWidth = (int) (bitmap.getWidth() * scale); bitmapHeight = (int) (bitmap.getHeight() * scale); /** * evaluator and interpolator */ mScaleEvaluator = new FloatEvaluator(); mAlphaEvaluator = new FloatEvaluator(); mScaleTimeInterpolator = new LinearInterpolator(); mFrameTimeInterpolator = new AccelerateInterpolator(0.8f); mAlphaTimeInterpolator = new DecelerateInterpolator(0.5f); }
@Override public void onAnimationUpdate(ValueAnimator animation) { final float currentValue = (float) animation.getAnimatedValue(); if (!isOutOfPreview) { final float y = evaluator.evaluate(currentValue, fromY, toY); imageView.setY(y); } final float alpha = evaluator.evaluate(currentValue, oldBgAlpha, 0); changeBackgroundAlpha((int) alpha); setDragStatus(DragStatus.STATUS_EXITTING); } });
animator.setDuration(REBACK_ANIM_DURATION); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { final FloatEvaluator evaluator = new FloatEvaluator(); final int oldBgAlpha = getBackgroundAlpha();
@Override public void onAnimationUpdate(ValueAnimator animation) { float fraction = animation.getAnimatedFraction(); float x = evaluator.evaluate(fraction, fromX, toX); float y = evaluator.evaluate(fraction, fromY, toY); float width = evaluator.evaluate(fraction, oldWidth, newWidth); float height = evaluator.evaluate(fraction, oldHeight, newHeight); imageView.setX(x); imageView.setY(y); mImageViewParams.width = (int) width; mImageViewParams.height = (int) height; imageView.setLayoutParams(mImageViewParams); changeBackgroundAlpha((int) ((1 - fraction) * 255)); if (callback != null) { callback.onRunning(fraction); } } });
private void startAnimator2() { ObjectAnimator animator2 = new ObjectAnimator(); animator2.setTarget(textView2); animator2.setPropertyName("translationY"); animator2.setFloatValues(0f, -100f); animator2.setDuration(1000); animator2.setInterpolator(EasingFunction.BOUNCE_OUT); animator2.setEvaluator(new FloatEvaluator()); animator2.start(); }
@SuppressLint("WrongConstant") @Override public void onAnimationUpdate(ValueAnimator animation) { final float currentValue = (float) animation.getAnimatedValue(); if (fromY != toY) { final float y = evaluator.evaluate(currentValue, fromY, toY); imageView.setY(y); } if (oldBgAlpha != NO_BACKGROUND_ALPHA) { final float alpha = evaluator.evaluate(currentValue, oldBgAlpha, NO_BACKGROUND_ALPHA); changeBackgroundAlpha((int) alpha); } setDragStatus(DragStatus.STATUS_REBACKING); } });
private void use4() { final TextView textView = (TextView) findViewById(R.id.tv_framespan4); String text = "oklib工具库测试字体多色渐变动画效果"; int[] colors = new int[]{R.color.blue_colorDark, R.color.radio_group_bg_2, R.color.text_color_6, R.color.common_text_yellow,}; AnimatedColorSpan span = new AnimatedColorSpan(colors); final SpannableString spannableString = new SpannableString(text); String substring = "字体多色渐变动画效果"; int start = text.indexOf(substring); int end = start + substring.length(); spannableString.setSpan(span, start, end, 0); ObjectAnimator objectAnimator = ObjectAnimator.ofFloat( span, ANIMATED_COLOR_SPAN_FLOAT_PROPERTY, 0, 100); objectAnimator.setEvaluator(new FloatEvaluator()); objectAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { textView.setText(spannableString); } }); objectAnimator.setInterpolator(new LinearInterpolator()); objectAnimator.setDuration(DateUtils.MINUTE_IN_MILLIS * 3); objectAnimator.setRepeatCount(ValueAnimator.INFINITE); objectAnimator.start(); }
@SuppressLint("WrongConstant") @Override public void onAnimationUpdate(ValueAnimator animation) { final float currentValue = (float) animation.getAnimatedValue(); if (fromX != toX) { final float x = evaluator.evaluate(currentValue, fromX, toX); imageView.setX(x); } if (fromY != toY) { final float y = evaluator.evaluate(currentValue, fromY, toY); imageView.setY(y); } if (oldWidth != newWidth) { final float width = evaluator.evaluate(currentValue, oldWidth, newWidth); mImageViewParams.width = (int) width; } if (oldHeight != newHeight) { final float height = evaluator.evaluate(currentValue, oldHeight, newHeight); mImageViewParams.height = (int) height; } if (oldWidth != newWidth || oldHeight != newHeight) { imageView.setLayoutParams(mImageViewParams); } if (oldBgAlpha != NO_BACKGROUND_ALPHA) { final float alpha = evaluator.evaluate(currentValue, oldBgAlpha, NO_BACKGROUND_ALPHA); changeBackgroundAlpha((int) alpha); } setDragStatus(DragStatus.STATUS_REBACKING); } });
objectAnimator.setEvaluator(new FloatEvaluator());
@Override public void onAnimationUpdate(ValueAnimator animation) { final float fraction = animation.getAnimatedFraction(); final float x = evaluator.evaluate(fraction, fromX, toX); final float y = evaluator.evaluate(fraction, fromY, toY); final float width = evaluator.evaluate(fraction, oldWidth, newWidth); final float height = evaluator.evaluate(fraction, oldHeight, newHeight); imageView.setX(x); imageView.setY(y); mImageViewParams.width = (int) width; mImageViewParams.height = (int) height; imageView.setLayoutParams(mImageViewParams); changeBackgroundAlpha((int) (fraction * 255)); if (callback != null) { callback.onRunning(fraction); } } });
ValueAnimator aqiNumber = ValueAnimator.ofObject(new FloatEvaluator(), 0, item.progress); aqiNumber.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override
final float x = evaluator.evaluate(currentValue, fromX, toX); imageView.setX(x); final float y = evaluator.evaluate(currentValue, fromY, toY); imageView.setY(y); final float width = evaluator.evaluate(currentValue, oldWidth, newWidth); mImageViewParams.width = (int) width; final float height = evaluator.evaluate(currentValue, oldHeight, newHeight); mImageViewParams.height = (int) height; final float alpha = evaluator.evaluate(currentValue, oldBgAlpha, 0); changeBackgroundAlpha((int) alpha); setDragStatus(DragStatus.STATUS_EXITTING);