java类android.support.v4.view.animation.PathInterpolatorCompat的实例源码

ContextualSearchImageControl.java 文件源码 项目:chromium-for-android-56-debug-video 阅读 24 收藏 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 文件源码 项目: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);
}


问题


面经


文章

微信
公众号

扫码关注公众号