private void animateStaticImageVisibility(boolean visible) {
// If the panel is expanded then #onUpdateFromPeekToExpand() is responsible for setting
// mStaticImageVisibility and the static image appearance should not be animated.
if (visible && mExpandedPercentage > 0.f) return;
if (mStaticImageVisibilityInterpolator == null) {
mStaticImageVisibilityInterpolator =
PathInterpolatorCompat.create(0.4f, 0.f, 0.6f, 1.f);
}
mOverlayPanelAnimation.cancelAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY);
float endValue = visible ? 1.f : 0.f;
mOverlayPanelAnimation.addToAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY,
mStaticImageVisibilityPercentage, endValue,
OverlayPanelAnimation.BASE_ANIMATION_DURATION_MS, 0, false,
mStaticImageVisibilityInterpolator);
}
java类android.support.v4.view.animation.PathInterpolatorCompat的实例源码
ContextualSearchImageControl.java 文件源码
项目:chromium-for-android-56-debug-video
阅读 24
收藏 0
点赞 0
评论 0
ContextualSearchImageControl.java 文件源码
项目:AndroidChromium
阅读 27
收藏 0
点赞 0
评论 0
private void animateStaticImageVisibility(boolean visible) {
// If the panel is expanded then #onUpdateFromPeekToExpand() is responsible for setting
// mStaticImageVisibility and the static image appearance should not be animated.
if (visible && mExpandedPercentage > 0.f) return;
if (mStaticImageVisibilityInterpolator == null) {
mStaticImageVisibilityInterpolator =
PathInterpolatorCompat.create(0.4f, 0.f, 0.6f, 1.f);
}
mOverlayPanelAnimation.cancelAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY);
float endValue = visible ? 1.f : 0.f;
mOverlayPanelAnimation.addToAnimation(this, AnimationType.STATIC_IMAGE_VISIBILITY,
mStaticImageVisibilityPercentage, endValue,
OverlayPanelAnimation.BASE_ANIMATION_DURATION_MS, 0, false,
mStaticImageVisibilityInterpolator);
}
ContextualSearchImageControl.java 文件源码
项目:365browser
阅读 24
收藏 0
点赞 0
评论 0
private void animateCustomImageVisibility(boolean visible) {
// If the panel is expanded then #onUpdateFromPeekToExpand() is responsible for setting
// mCustomImageVisibility and the custom image appearance should not be animated.
if (visible && mExpandedPercentage > 0.f) return;
if (mCustomImageVisibilityInterpolator == null) {
mCustomImageVisibilityInterpolator =
PathInterpolatorCompat.create(0.4f, 0.f, 0.6f, 1.f);
}
mOverlayPanelAnimation.cancelAnimation(this, AnimationType.CUSTOM_IMAGE_VISIBILITY);
float endValue = visible ? 1.f : 0.f;
mOverlayPanelAnimation.addToAnimation(this, AnimationType.CUSTOM_IMAGE_VISIBILITY,
mCustomImageVisibilityPercentage, endValue,
OverlayPanelAnimation.BASE_ANIMATION_DURATION_MS, 0, false,
mCustomImageVisibilityInterpolator);
}
WXAnimationModule.java 文件源码
项目:weex-3d-map
阅读 28
收藏 0
点赞 0
评论 0
private static @Nullable
Interpolator createTimeInterpolator(@NonNull WXAnimationBean animation) {
String interpolator = animation.timingFunction;
if (!TextUtils.isEmpty(interpolator)) {
switch (interpolator) {
case WXAnimationBean.EASE_IN:
return new AccelerateInterpolator();
case WXAnimationBean.EASE_OUT:
return new DecelerateInterpolator();
case WXAnimationBean.EASE_IN_OUT:
return new AccelerateDecelerateInterpolator();
case WXAnimationBean.LINEAR:
return new LinearInterpolator();
default:
//Parse cubic-bezier
try {
SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
animation.timingFunction,
new SingleFunctionParser.FlatMapper<Float>() {
@Override
public Float map(String raw) {
return Float.parseFloat(raw);
}
});
List<Float> params = parser.parse(WXAnimationBean.CUBIC_BEZIER);
if (params != null && params.size() == WXAnimationBean.NUM_CUBIC_PARAM) {
return PathInterpolatorCompat.create(
params.get(0), params.get(1), params.get(2), params.get(3));
}
else {
return null;
}
}catch (RuntimeException e){
return null;
}
}
}
return null;
}
AnimationAction.java 文件源码
项目:ucar-weex-core
阅读 23
收藏 0
点赞 0
评论 0
private
@Nullable
Interpolator createTimeInterpolator() {
String interpolator = mAnimationBean.timingFunction;
if (!TextUtils.isEmpty(interpolator)) {
switch (interpolator) {
case WXAnimationBean.EASE_IN:
return new AccelerateInterpolator();
case WXAnimationBean.EASE_OUT:
return new DecelerateInterpolator();
case WXAnimationBean.EASE_IN_OUT:
return new AccelerateDecelerateInterpolator();
case WXAnimationBean.LINEAR:
return new LinearInterpolator();
default:
//Parse cubic-bezier
try {
SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
mAnimationBean.timingFunction,
new SingleFunctionParser.FlatMapper<Float>() {
@Override
public Float map(String raw) {
return Float.parseFloat(raw);
}
});
List<Float> params = parser.parse(WXAnimationBean.CUBIC_BEZIER);
if (params != null && params.size() == WXAnimationBean.NUM_CUBIC_PARAM) {
return PathInterpolatorCompat.create(
params.get(0), params.get(1), params.get(2), params.get(3));
} else {
return null;
}
} catch (RuntimeException e) {
return null;
}
}
}
return null;
}
MulRingProgressBar.java 文件源码
项目:goRefresh
阅读 26
收藏 0
点赞 0
评论 0
private ValueAnimator initAnimatior(final ProgressBean pb) {
Interpolator pathInterpolatorCompat = PathInterpolatorCompat.create(0.7f, 0f, 0.3f, 1f);
ValueAnimator mAnimator = ValueAnimator.ofInt(0, 359);
mAnimator.setDuration(pb.getDuration());
mAnimator.setInterpolator(pathInterpolatorCompat);
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
Log.d("dur", animation.getAnimatedValue() + "====" + pb.getmBallRadius());
pb.setmCurrentAngle((int) animation.getAnimatedValue());
invalidate();
}
});
return mAnimator;
}
RingProgressBar.java 文件源码
项目:goRefresh
阅读 23
收藏 0
点赞 0
评论 0
private void initAnimatior() {
pathInterpolatorCompat = PathInterpolatorCompat.create(0.7f, 0f, 0.3f, 1f);
mAnimator = ValueAnimator.ofInt(0, 359);
mAnimator.setDuration(mDuration);
mAnimator.setRepeatCount(-1);
mAnimator.setInterpolator(pathInterpolatorCompat);
mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
mCurrentAngle = (int) animation.getAnimatedValue();
invalidate();
}
});
}
WXAnimationModule.java 文件源码
项目:weex-uikit
阅读 33
收藏 0
点赞 0
评论 0
private static @Nullable
Interpolator createTimeInterpolator(@NonNull WXAnimationBean animation) {
String interpolator = animation.timingFunction;
if (!TextUtils.isEmpty(interpolator)) {
switch (interpolator) {
case WXAnimationBean.EASE_IN:
return new AccelerateInterpolator();
case WXAnimationBean.EASE_OUT:
return new DecelerateInterpolator();
case WXAnimationBean.EASE_IN_OUT:
return new AccelerateDecelerateInterpolator();
case WXAnimationBean.LINEAR:
return new LinearInterpolator();
default:
//Parse cubic-bezier
try {
SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
animation.timingFunction,
new SingleFunctionParser.FlatMapper<Float>() {
@Override
public Float map(String raw) {
return Float.parseFloat(raw);
}
});
List<Float> params = parser.parse(WXAnimationBean.CUBIC_BEZIER);
if (params != null && params.size() == WXAnimationBean.NUM_CUBIC_PARAM) {
return PathInterpolatorCompat.create(
params.get(0), params.get(1), params.get(2), params.get(3));
}
else {
return null;
}
}catch (RuntimeException e){
return null;
}
}
}
return null;
}
ChatActivity.java 文件源码
项目:belvedere
阅读 32
收藏 0
点赞 0
评论 0
@Override
public void onScroll(int height, int scrollArea, float scrollPosition) {
final Interpolator interpolator = PathInterpolatorCompat.create(.19f,0f,.2f,1f);
final float interpolation = interpolator.getInterpolation((scrollPosition * .30f));
final int bottomPadding = (int) (-1f * interpolation * scrollArea);
findViewById(R.id.activity_input).setTranslationY(bottomPadding);
findViewById(R.id.activity_recyclerview).setTranslationY(bottomPadding);
}
BloopActivity.java 文件源码
项目:Bloop
阅读 22
收藏 0
点赞 0
评论 0
/**
* Hide the fab and blocking the ability to place a flag.
*/
private void hidePlaceFlag() {
mPlaceFlagButton
.animate()
.translationY(mPlaceFlagButton.getHeight() + mPlaceFlagButtonMarginBottom)
.setDuration(150)
.setInterpolator(PathInterpolatorCompat.create(0.4f, 0.0f, 0.6f, 1f))
.start();
mCannotCaptureTextView.setVisibility(View.INVISIBLE);
mFlagButtonIsShown = false;
}
WXAnimationModule.java 文件源码
项目:weex-3d-map
阅读 33
收藏 0
点赞 0
评论 0
private static @Nullable
Interpolator createTimeInterpolator(@NonNull WXAnimationBean animation) {
String interpolator = animation.timingFunction;
if (!TextUtils.isEmpty(interpolator)) {
switch (interpolator) {
case WXAnimationBean.EASE_IN:
return new AccelerateInterpolator();
case WXAnimationBean.EASE_OUT:
return new DecelerateInterpolator();
case WXAnimationBean.EASE_IN_OUT:
return new AccelerateDecelerateInterpolator();
case WXAnimationBean.LINEAR:
return new LinearInterpolator();
default:
//Parse cubic-bezier
try {
SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
animation.timingFunction,
new SingleFunctionParser.FlatMapper<Float>() {
@Override
public Float map(String raw) {
return Float.parseFloat(raw);
}
});
List<Float> params = parser.parse(WXAnimationBean.CUBIC_BEZIER);
if (params != null && params.size() == WXAnimationBean.NUM_CUBIC_PARAM) {
return PathInterpolatorCompat.create(
params.get(0), params.get(1), params.get(2), params.get(3));
}
else {
return null;
}
}catch (RuntimeException e){
return null;
}
}
}
return null;
}
WXAnimationModule.java 文件源码
项目:Weex-TestDemo
阅读 30
收藏 0
点赞 0
评论 0
private static @Nullable
Interpolator createTimeInterpolator(@NonNull WXAnimationBean animation) {
String interpolator = animation.timingFunction;
if (!TextUtils.isEmpty(interpolator)) {
switch (interpolator) {
case WXAnimationBean.EASE_IN:
return new AccelerateInterpolator();
case WXAnimationBean.EASE_OUT:
return new DecelerateInterpolator();
case WXAnimationBean.EASE_IN_OUT:
return new AccelerateDecelerateInterpolator();
case WXAnimationBean.LINEAR:
return new LinearInterpolator();
default:
//Parse cubic-bezier
try {
SingleFunctionParser<Float> parser = new SingleFunctionParser<>(
animation.timingFunction,
new SingleFunctionParser.FlatMapper<Float>() {
@Override
public Float map(String raw) {
return Float.parseFloat(raw);
}
});
List<Float> params = parser.parse(WXAnimationBean.CUBIC_BEZIER);
if (params != null && params.size() == WXAnimationBean.NUM_CUBIC_PARAM) {
return PathInterpolatorCompat.create(
params.get(0), params.get(1), params.get(2), params.get(3));
}
else {
return null;
}
}catch (RuntimeException e){
return null;
}
}
}
return null;
}
ExpandingUnlocker.java 文件源码
项目:Astro-Lockscreen
阅读 24
收藏 0
点赞 0
评论 0
@Override
public void onUserTouchMove(MotionEvent motionEvent) {
float distance = Math.max(
Math.abs(motionEvent.getRawX() - originalX),
Math.abs(motionEvent.getRawY() - originalY)
);
unlockOnUp = distance > unlockDistance;
if (unlockOnUp && !hasVibrated) {
SRJHelper.vibrate(20, mContext);
hasVibrated = true;
}
float scale = distance/(mContext.getResources().getDimensionPixelSize(R.dimen.lockscreen_ac_display_unlock_distance_max));
final float MAX_ALPHA = 0.6f;
dimView.animate().alpha(scale/ MAX_ALPHA).setDuration(0).start();
Interpolator customInterpolator = PathInterpolatorCompat.create(0.080f, 1.80f, 0.590f, 1.70f);
scale = customInterpolator.getInterpolation(scale);
scaleAnimator = unlockView.animate().scaleX(scale).scaleY(scale).setDuration(0);
scaleAnimator.start();
float imgLockScale = scale/2;
if (imgLockScale > 0.35f) {
imgLockScale = 0.35f;
}
imgLock.animate().alpha(scale).scaleX(imgLockScale).scaleY(imgLockScale).setDuration(0).start();
}
TouchPullView.java 文件源码
项目:BeFoot
阅读 19
收藏 0
点赞 0
评论 0
private void initTangentInterpolator() {
if (mCircleRadius > 0 && (mDragHeight >= mCircleRadius * 2)) {
// The run // 270~360~mTangentAngle=>0~90~mTangentAngle
// When drag double radius the angle = MIN_RUN_ANGLE
mTangentInterpolator = PathInterpolatorCompat.create((mCircleRadius * 2) / mDragHeight,
MIN_RUN_ANGLE / (MIN_RUN_ANGLE + mTangentAngle));
}
}
PopUpSetViewNew.java 文件源码
项目:OpenSongTablet
阅读 26
收藏 0
点赞 0
评论 0
public void doScroll(String direction) {
Interpolator customInterpolator = PathInterpolatorCompat.create(0.445f, 0.050f, 0.550f, 0.950f);
if (direction.equals("up")) {
mRecyclerView.smoothScrollBy(0,(int) (-FullscreenActivity.scrollDistance * mRecyclerView.getHeight()),customInterpolator);
} else {
mRecyclerView.smoothScrollBy(0,(int) (+FullscreenActivity.scrollDistance * mRecyclerView.getHeight()),customInterpolator);
}
}
FlyRefreshLayout.java 文件源码
项目:binea_project_for_android
阅读 22
收藏 0
点赞 0
评论 0
@Override
protected void onStartRefreshAnimation() {
if(mFlyAnimator != null){
mFlyAnimator.end();
}
final View iconView = getActionView();
UIUtils.clearAnimator(iconView);
AnimatorSet flyUpAnim = new AnimatorSet();
flyUpAnim.setDuration(800);
ObjectAnimator transX = ObjectAnimator.ofFloat(iconView, "translationX", 0, getWidth());
ObjectAnimator transY = ObjectAnimator.ofFloat(iconView, "translationY", 0, -mHeaderController.getHeight());
transY.setInterpolator(PathInterpolatorCompat.create(0.7f, 1f));
ObjectAnimator rotation = ObjectAnimator.ofFloat(iconView, "rotation", -45, 0);
rotation.setInterpolator(new DecelerateInterpolator());
ObjectAnimator rotationX = ObjectAnimator.ofFloat(iconView, "rotationX", 0, 60);
rotationX.setInterpolator(new DecelerateInterpolator());
flyUpAnim.playTogether(transX, transY, rotationX,
ObjectAnimator.ofFloat(iconView, "scaleX", 1, 0.5f),
ObjectAnimator.ofFloat(iconView, "scaleY", 1, 0.5f),
rotation
);
mFlyAnimator = flyUpAnim;
mFlyAnimator.start();
if (mListener != null) {
mListener.onRefresh(FlyRefreshLayout.this);
}
}
FlyRefreshLayout.java 文件源码
项目:FlyRefresh
阅读 25
收藏 0
点赞 0
评论 0
@Override
public void startRefresh() {
if (mFlyAnimator != null) {
mFlyAnimator.end();
}
final View iconView = getIconView();
UIUtils.clearAnimator(iconView);
AnimatorSet flyUpAnim = new AnimatorSet();
flyUpAnim.setDuration(800);
ObjectAnimator transX = ObjectAnimator.ofFloat(iconView, "translationX", 0, getWidth());
ObjectAnimator transY = ObjectAnimator.ofFloat(iconView, "translationY", 0, -mHeaderController.getHeight());
transY.setInterpolator(PathInterpolatorCompat.create(0.7f, 1f));
ObjectAnimator rotation = ObjectAnimator.ofFloat(iconView, "rotation", -45, 0);
rotation.setInterpolator(new DecelerateInterpolator());
ObjectAnimator rotationX = ObjectAnimator.ofFloat(iconView, "rotationX", 0, 60);
rotationX.setInterpolator(new DecelerateInterpolator());
flyUpAnim.playTogether(transX, transY, rotationX,
ObjectAnimator.ofFloat(iconView, "scaleX", 1, 0.5f),
ObjectAnimator.ofFloat(iconView, "scaleY", 1, 0.5f),
rotation
);
mFlyAnimator = flyUpAnim;
mFlyAnimator.start();
if (mListener != null) {
mListener.onRefresh(FlyRefreshLayout.this);
}
}
MultiDecelerateAccelerateInterpolator.java 文件源码
项目:miaosou
阅读 27
收藏 0
点赞 0
评论 0
/**
* 构造PathInterpolator
* @param segmentLength
* @return
*/
public Interpolator createInterpolator(float[] segmentLength){
Path p = createPath(segmentLength);
Interpolator inter = PathInterpolatorCompat.create(p);
return inter;
}
Keyframe.java 文件源码
项目:atlas
阅读 26
收藏 0
点赞 0
评论 0
static <T> Keyframe<T> newInstance(JSONObject json, LottieComposition composition, float scale,
AnimatableValue.Factory<T> valueFactory) {
PointF cp1 = null;
PointF cp2 = null;
float startFrame = 0;
T startValue = null;
T endValue = null;
Interpolator interpolator = null;
if (json.has("t")) {
startFrame = (float) json.optDouble("t", 0);
Object startValueJson = json.opt("s");
if (startValueJson != null) {
startValue = valueFactory.valueFromObject(startValueJson, scale);
}
Object endValueJson = json.opt("e");
if (endValueJson != null) {
endValue = valueFactory.valueFromObject(endValueJson, scale);
}
JSONObject cp1Json = json.optJSONObject("o");
JSONObject cp2Json = json.optJSONObject("i");
if (cp1Json != null && cp2Json != null) {
cp1 = JsonUtils.pointFromJsonObject(cp1Json, scale);
cp2 = JsonUtils.pointFromJsonObject(cp2Json, scale);
}
boolean hold = json.optInt("h", 0) == 1;
if (hold) {
endValue = startValue;
// TODO: create a HoldInterpolator so progress changes don't invalidate.
interpolator = LINEAR_INTERPOLATOR;
} else if (cp1 != null) {
interpolator = PathInterpolatorCompat.create(
cp1.x / scale, cp1.y / scale, cp2.x / scale, cp2.y / scale);
} else {
interpolator = LINEAR_INTERPOLATOR;
}
} else {
startValue = valueFactory.valueFromObject(json, scale);
endValue = startValue;
}
return new Keyframe<>(composition, startValue, endValue, interpolator, startFrame, null);
}
FlyRefreshHeader.java 文件源码
项目:SmartRefresh
阅读 30
收藏 0
点赞 0
评论 0
@Override
public void onStartAnimator(RefreshLayout layout, int headHeight, int extendHeight) {
/**
* 提前关闭 下拉视图偏移
*/
mRefreshKernel.animSpinner(0);
if (mCurrentPercent > 0) {
ValueAnimator valueAnimator = ValueAnimator.ofFloat(mCurrentPercent, 0);
valueAnimator.setDuration(300);
valueAnimator.addUpdateListener(animation -> {
onPullingDown((float) animation.getAnimatedValue(), 0, 0, 0);
});
valueAnimator.start();
mCurrentPercent = 0;
}
if (mFlyView != null && !mIsRefreshing) {
if (mFlyAnimator != null) {
mFlyAnimator.end();
mFlyView.clearAnimation();
}
mIsRefreshing = true;
layout.setEnableRefresh(false);
final int offDistX = ((View) mRefreshLayout).getWidth()-mFlyView.getLeft();
final int offDistY = -(mFlyView.getTop() - mOffset) * 2 / 3;
ObjectAnimator transX = ObjectAnimator.ofFloat(mFlyView, "translationX", 0, offDistX);
ObjectAnimator transY = ObjectAnimator.ofFloat(mFlyView, "translationY", 0, offDistY);
transY.setInterpolator(PathInterpolatorCompat.create(0.7f, 1f));
ObjectAnimator rotation = ObjectAnimator.ofFloat(mFlyView, "rotation", mFlyView.getRotation(), 0);
rotation.setInterpolator(new DecelerateInterpolator());
ObjectAnimator rotationX = ObjectAnimator.ofFloat(mFlyView, "rotationX", mFlyView.getRotationX(), 50);
rotationX.setInterpolator(new DecelerateInterpolator());
AnimatorSet flyUpAnim = new AnimatorSet();
flyUpAnim.setDuration(800);
flyUpAnim.playTogether(transX
,transY
,rotation
,rotationX
,ObjectAnimator.ofFloat(mFlyView, "scaleX", mFlyView.getScaleX(), 0.5f)
,ObjectAnimator.ofFloat(mFlyView, "scaleY", mFlyView.getScaleY(), 0.5f)
);
mFlyAnimator = flyUpAnim;
mFlyAnimator.start();
}
}
EaseInQuad.java 文件源码
项目:Flubber
阅读 26
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.55f, 0.085f, 0.68f, 0.53f);
}
EaseInOutQuint.java 文件源码
项目:Flubber
阅读 28
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.86f, 0f, 0.07f, 1f); }
EaseOutExpo.java 文件源码
项目:Flubber
阅读 23
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.19f, 1f, 0.22f, 1f);
}
EaseInOut.java 文件源码
项目:Flubber
阅读 22
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.42f, 0.0f, 0.58f, 1.0f);
}
EaseInOutQuart.java 文件源码
项目:Flubber
阅读 30
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.77f, 0f, 0.175f, 1f);
}
EaseInCubic.java 文件源码
项目:Flubber
阅读 21
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.55f, 0.055f, 0.675f, 0.19f);
}
EaseOutQuad.java 文件源码
项目:Flubber
阅读 22
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.25f, 0.46f, 0.45f, 0.94f);
}
EaseInOutCubic.java 文件源码
项目:Flubber
阅读 47
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.645f, 0.045f, 0.355f, 1f);
}
EaseInQuart.java 文件源码
项目:Flubber
阅读 24
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.895f, 0.03f, 0.685f, 0.22f);
}
EaseOutQuint.java 文件源码
项目:Flubber
阅读 28
收藏 0
点赞 0
评论 0
@Override
public Interpolator createInterpolatorFor(AnimationBody animationBody) {
return PathInterpolatorCompat.create(0.23f, 1f, 0.32f, 1f);
}