类android.view.animation.PathInterpolator源码实例Demo

下面列出了怎么用android.view.animation.PathInterpolator的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Orin   文件: AbsSlidingMusicPanelActivity.java
private void animateNavigationBarColor(int color) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
        navigationBarColorAnimator = ValueAnimator
                .ofArgb(getWindow().getNavigationBarColor(), color)
                .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME);
        navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
        navigationBarColorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue());
            }
        });
        navigationBarColorAnimator.start();
    }
}
 
@Test
public void validateSetOfObjectAnimatorAlphaMotionTiming() {
  MotionSpec spec =
      MotionSpec.createFromResource(
          activityTestRule.getActivity(), R.animator.valid_set_of_object_animator_motion_spec);
  MotionTiming alpha = spec.getTiming("alpha");

  assertEquals(3, alpha.getDelay());
  assertEquals(5, alpha.getDuration());
  if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
    assertThat(alpha.getInterpolator(), instanceOf(PathInterpolator.class));
  } else {
    assertThat(alpha.getInterpolator(), instanceOf(FastOutLinearInInterpolator.class));
  }
  assertEquals(7, alpha.getRepeatCount());
  assertEquals(ValueAnimator.RESTART, alpha.getRepeatMode());
}
 
@Test
public void validateSetOfObjectAnimatorTranslationMotionTiming() {
  MotionSpec spec =
      MotionSpec.createFromResource(
          activityTestRule.getActivity(), R.animator.valid_set_of_object_animator_motion_spec);
  MotionTiming translation = spec.getTiming("translation");

  assertEquals(11, translation.getDelay());
  assertEquals(13, translation.getDuration());
  if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
    assertThat(translation.getInterpolator(), instanceOf(PathInterpolator.class));
  } else {
    assertThat(translation.getInterpolator(), instanceOf(FastOutSlowInInterpolator.class));
  }
  assertEquals(17, translation.getRepeatCount());
  assertEquals(ValueAnimator.REVERSE, translation.getRepeatMode());
}
 
private void animateNavigationBarColor(int color) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
        navigationBarColorAnimator = ValueAnimator
                .ofArgb(getWindow().getNavigationBarColor(), color)
                .setDuration(ViewUtil.MUSIC_ANIM_TIME);
        navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
        navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()));
        navigationBarColorAnimator.start();
    }
}
 
源代码5 项目: Music-Player   文件: ViewUtil.java
private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) {
    ObjectAnimator animator;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor);
    } else {
        animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor);
        animator.setEvaluator(new ArgbEvaluator());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
    }
    animator.setDuration(MUSIC_ANIM_TIME);
    return animator;
}
 
源代码6 项目: LaunchEnr   文件: FlingAnimationUtils.java
private Interpolator getInterpolator(float startGradient, float velocityFactor) {
    if (startGradient != mCachedStartGradient
            || velocityFactor != mCachedVelocityFactor) {
        float speedup = mSpeedUpFactor * (1.0f - velocityFactor);
        mInterpolator = new PathInterpolator(speedup,
                speedup * startGradient,
                mLinearOutSlowInX2, mY2);
        mCachedStartGradient = startGradient;
        mCachedVelocityFactor = velocityFactor;
    }
    return mInterpolator;
}
 
源代码7 项目: LaunchEnr   文件: FlingAnimationUtils.java
private AnimatorProperties getDismissingProperties(float currValue, float endValue,
        float velocity, float maxDistance) {
    float maxLengthSeconds = (float) (mMaxLengthSeconds
            * Math.pow(Math.abs(endValue - currValue) / maxDistance, 0.5f));
    float diff = Math.abs(endValue - currValue);
    float velAbs = Math.abs(velocity);
    float y2 = calculateLinearOutFasterInY2(velAbs);

    float startGradient = y2 / LINEAR_OUT_FASTER_IN_X2;
    Interpolator mLinearOutFasterIn = new PathInterpolator(0, 0, LINEAR_OUT_FASTER_IN_X2, y2);
    float durationSeconds = startGradient * diff / velAbs;
    if (durationSeconds <= maxLengthSeconds) {
        mAnimatorProperties.interpolator = mLinearOutFasterIn;
    } else if (velAbs >= mMinVelocityPxPerSecond) {

        // Cross fade between linear-out-faster-in and linear interpolator with current
        // velocity.
        durationSeconds = maxLengthSeconds;
        VelocityInterpolator velocityInterpolator
                = new VelocityInterpolator(durationSeconds, velAbs, diff);
        InterpolatorInterpolator superInterpolator = new InterpolatorInterpolator(
                velocityInterpolator, mLinearOutFasterIn, Interpolators.LINEAR_OUT_SLOW_IN);
        mAnimatorProperties.interpolator = superInterpolator;
    } else {

        // Just use a normal interpolator which doesn't take the velocity into account.
        durationSeconds = maxLengthSeconds;
        mAnimatorProperties.interpolator = Interpolators.FAST_OUT_LINEAR_IN;
    }
    mAnimatorProperties.duration = (long) (durationSeconds * 1000);
    return mAnimatorProperties;
}
 
源代码8 项目: AndroidPhotoFilters   文件: BezierSpline.java
private static int[] getOutputPointsForNewerDevices(Point[] knots) {

        Point[] controlPoints = calculateControlPoints(knots);
        Path path = new Path();
        path.moveTo(0, 0);
        path.lineTo(knots[0].x / 255.0f, knots[0].y / 255.0f);
        path.moveTo(knots[0].x / 255.0f, knots[0].y / 255.0f);

        for (int index = 1; index < knots.length; index++) {
            path.quadTo(
                    controlPoints[index - 1].x / 255.0f,
                    controlPoints[index - 1].y / 255.0f,
                    knots[index].x / 255.0f,
                    knots[index].y / 255.0f
            );
            path.moveTo(knots[index].x / 255.0f, knots[index].y / 255.0f);
        }

        path.lineTo(1, 1);
        path.moveTo(1, 1);

        float[] allPoints = new float[256];

        for (int x = 0; x < 256; x++) {
            PathInterpolator pathInterpolator = new PathInterpolator(path);
            allPoints[x] = 255.0f * pathInterpolator.getInterpolation((float) x / 255.0f);
        }

        allPoints[0] = knots[0].y;
        allPoints[255] = knots[knots.length - 1].y;
        return validateCurve(allPoints);
    }
 
源代码9 项目: Orin   文件: ViewUtil.java
private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) {
    ObjectAnimator animator;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor);
    } else {
        animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor);
        animator.setEvaluator(new ArgbEvaluator());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
    }
    animator.setDuration(PHONOGRAPH_ANIM_TIME);
    return animator;
}
 
源代码10 项目: android-dialer   文件: PathInterpolatorCompat.java
public static Interpolator create(
    float controlX1, float controlY1, float controlX2, float controlY2) {
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    return new PathInterpolator(controlX1, controlY1, controlX2, controlY2);
  }
  return new PathInterpolatorBase(controlX1, controlY1, controlX2, controlY2);
}
 
源代码11 项目: RetroMusicPlayer   文件: ViewUtil.java
private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) {
    ObjectAnimator animator;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor);
    } else {
        animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor);
        animator.setEvaluator(new ArgbEvaluator());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
    }
    animator.setDuration(PHONOGRAPH_ANIM_TIME);
    return animator;
}
 
private void animateNavigationBarColor(int color) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
        navigationBarColorAnimator = ValueAnimator
                .ofArgb(getWindow().getNavigationBarColor(), color)
                .setDuration(ViewUtil.VINYL_MUSIC_PLAYER_ANIM_TIME);
        navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
        navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()));
        navigationBarColorAnimator.start();
    }
}
 
源代码13 项目: VinylMusicPlayer   文件: ViewUtil.java
private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) {
    ObjectAnimator animator;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor);
    } else {
        animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor);
        animator.setEvaluator(new ArgbEvaluator());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
    }
    animator.setDuration(VINYL_MUSIC_PLAYER_ANIM_TIME);
    return animator;
}
 
源代码14 项目: AndroidPhotoFilters   文件: BezierSpline.java
private static int[] getOutputPointsForNewerDevices(Point[] knots) {

        Point[] controlPoints = calculateControlPoints(knots);
        Path path = new Path();
        path.moveTo(0, 0);
        path.lineTo(knots[0].x / 255.0f, knots[0].y / 255.0f);
        path.moveTo(knots[0].x / 255.0f, knots[0].y / 255.0f);

        for (int index = 1; index < knots.length; index++) {
            path.quadTo(
                    controlPoints[index - 1].x / 255.0f,
                    controlPoints[index - 1].y / 255.0f,
                    knots[index].x / 255.0f,
                    knots[index].y / 255.0f
            );
            path.moveTo(knots[index].x / 255.0f, knots[index].y / 255.0f);
        }

        path.lineTo(1, 1);
        path.moveTo(1, 1);

        float[] allPoints = new float[256];

        for (int x = 0; x < 256; x++) {
            PathInterpolator pathInterpolator = new PathInterpolator(path);
            allPoints[x] = 255.0f * pathInterpolator.getInterpolation((float) x / 255.0f);
        }

        allPoints[0] = knots[0].y;
        allPoints[255] = knots[knots.length - 1].y;
        return validateCurve(allPoints);
    }
 
源代码15 项目: Phonograph   文件: AbsSlidingMusicPanelActivity.java
private void animateNavigationBarColor(int color) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        if (navigationBarColorAnimator != null) navigationBarColorAnimator.cancel();
        navigationBarColorAnimator = ValueAnimator
                .ofArgb(getWindow().getNavigationBarColor(), color)
                .setDuration(ViewUtil.PHONOGRAPH_ANIM_TIME);
        navigationBarColorAnimator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
        navigationBarColorAnimator.addUpdateListener(animation -> AbsSlidingMusicPanelActivity.super.setNavigationbarColor((Integer) animation.getAnimatedValue()));
        navigationBarColorAnimator.start();
    }
}
 
源代码16 项目: Phonograph   文件: ViewUtil.java
private static Animator createColorAnimator(Object target, String propertyName, @ColorInt int startColor, @ColorInt int endColor) {
    ObjectAnimator animator;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator = ObjectAnimator.ofArgb(target, propertyName, startColor, endColor);
    } else {
        animator = ObjectAnimator.ofInt(target, propertyName, startColor, endColor);
        animator.setEvaluator(new ArgbEvaluator());
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        animator.setInterpolator(new PathInterpolator(0.4f, 0f, 1f, 1f));
    }
    animator.setDuration(PHONOGRAPH_ANIM_TIME);
    return animator;
}
 
源代码17 项目: Dashchan   文件: PullableWrapper.java
public LollipopView(Wrapped wrapped, boolean top) {
	this.wrapped = new WeakReference<>(wrapped);
	this.top = top;
	Path startPath = new Path();
	startPath.lineTo(0.5f, 0f);
	startPath.cubicTo(0.7f, 0f, 0.6f, 1f, 1f, 1f);
	startInterpolator = new PathInterpolator(startPath);
	Path endPath = new Path();
	endPath.cubicTo(0.2f, 0f, 0.1f, 1f, 0.5f, 1f);
	endPath.lineTo(1f, 1f);
	endInterpolator = new PathInterpolator(endPath);
	ringPaint.setStyle(Paint.Style.STROKE);
	ringPaint.setStrokeCap(Paint.Cap.SQUARE);
	ringPaint.setStrokeJoin(Paint.Join.MITER);
}
 
源代码18 项目: Dashchan   文件: CircularProgressBar.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CircularProgressBar(Context context, AttributeSet attrs) {
	super(context, attrs);
	paint = new Paint(Paint.ANTI_ALIAS_FLAG);
	paint.setStyle(Paint.Style.STROKE);
	paint.setStrokeCap(Paint.Cap.SQUARE);
	paint.setStrokeJoin(Paint.Join.MITER);
	if (C.API_LOLLIPOP) {
		Path startPath = new Path();
		startPath.lineTo(0.5f, 0f);
		startPath.cubicTo(0.7f, 0f, 0.6f, 1f, 1f, 1f);
		lollipopStartInterpolator = new PathInterpolator(startPath);
		Path endPath = new Path();
		endPath.cubicTo(0.2f, 0f, 0.1f, 1f, 0.5f, 1f);
		endPath.lineTo(1f, 1f);
		lollipopEndInterpolator = new PathInterpolator(endPath);
		indeterminateDrawable = null;
		indeterminateDuration = 0;
	} else {
		lollipopStartInterpolator = null;
		lollipopEndInterpolator = null;
		TypedArray typedArray = context.obtainStyledAttributes(android.R.style.Widget_Holo_ProgressBar_Large,
				new int[] {android.R.attr.indeterminateDrawable, android.R.attr.indeterminateDuration});
		indeterminateDrawable = typedArray.getDrawable(0);
		indeterminateDuration = typedArray.getInteger(1, 3500);
		typedArray.recycle();
	}
}
 
源代码19 项目: proteus   文件: AnimationUtils.java
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
Interpolator createInterpolator(Context c) {
  if (null != controlX2 && null != controlY2) {
    return new PathInterpolator(controlX1, controlY1, controlX2, controlY2);
  } else {
    return new PathInterpolator(controlX1, controlY1);
  }
}
 
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static Interpolator create(Path path) {
    return new PathInterpolator(path);
}
 
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static Interpolator create(float controlX, float controlY) {
    return new PathInterpolator(controlX, controlY);
}
 
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static Interpolator create(float controlX1, float controlY1,
                                  float controlX2, float controlY2) {
    return new PathInterpolator(controlX1, controlY1, controlX2, controlY2);
}