Search in sources :

Example 1 with SpringForce

use of androidx.dynamicanimation.animation.SpringForce in project android_packages_apps_Launcher3 by crdroidandroid.

the class RectFSpringAnim method start.

/**
 * Starts the fling/spring animation.
 * @param context The activity context.
 * @param velocityPxPerMs Velocity of swipe in px/ms.
 */
public void start(Context context, PointF velocityPxPerMs) {
    // Only tell caller that we ended if both x and y animations have ended.
    OnAnimationEndListener onXEndListener = ((animation, canceled, centerX, velocityX) -> {
        mRectXAnimEnded = true;
        maybeOnEnd();
    });
    OnAnimationEndListener onYEndListener = ((animation, canceled, centerY, velocityY) -> {
        mRectYAnimEnded = true;
        maybeOnEnd();
    });
    float startX = mCurrentCenterX;
    float endX = mTargetRect.centerX();
    float minXValue = Math.min(startX, endX);
    float maxXValue = Math.max(startX, endX);
    mRectXAnim = new FlingSpringAnim(this, context, RECT_CENTER_X, startX, endX, velocityPxPerMs.x * 1000, mMinVisChange, minXValue, maxXValue, 1f, onXEndListener);
    float startVelocityY = velocityPxPerMs.y * 1000;
    // Scale the Y velocity based on the initial velocity to tune the curves.
    float springVelocityFactor = 0.1f + 0.9f * Math.abs(startVelocityY) / 20000.0f;
    float startY = mCurrentY;
    float endY = mTrackingBottomY ? mTargetRect.bottom : mTargetRect.top;
    float minYValue = Math.min(startY, endY - mYOvershoot);
    float maxYValue = Math.max(startY, endY);
    mRectYAnim = new FlingSpringAnim(this, context, RECT_Y, startY, endY, startVelocityY, mMinVisChange, minYValue, maxYValue, springVelocityFactor, onYEndListener);
    float minVisibleChange = Math.abs(1f / mStartRect.height());
    ResourceProvider rp = DynamicResource.provider(context);
    float damping = rp.getFloat(R.dimen.swipe_up_rect_scale_damping_ratio);
    float stiffness = rp.getFloat(R.dimen.swipe_up_rect_scale_stiffness);
    mRectScaleAnim = new SpringAnimation(this, RECT_SCALE_PROGRESS).setSpring(new SpringForce(1f).setDampingRatio(damping).setStiffness(stiffness)).setStartVelocity(velocityPxPerMs.y * minVisibleChange).setMaxValue(1f).setMinimumVisibleChange(minVisibleChange).addEndListener((animation, canceled, value, velocity) -> {
        mRectScaleAnimEnded = true;
        maybeOnEnd();
    });
    setCanRelease(false);
    mAnimsStarted = true;
    mRectXAnim.start();
    mRectYAnim.start();
    mRectScaleAnim.start();
    for (Animator.AnimatorListener animatorListener : mAnimatorListeners) {
        animatorListener.onAnimationStart(null);
    }
}
Also used : RectF(android.graphics.RectF) Utilities(com.android.launcher3.Utilities) Context(android.content.Context) SpringForce(androidx.dynamicanimation.animation.SpringForce) PointF(android.graphics.PointF) FloatPropertyCompat(androidx.dynamicanimation.animation.FloatPropertyCompat) DynamicResource(com.android.launcher3.util.DynamicResource) ReleaseCheck(com.android.quickstep.RemoteAnimationTargets.ReleaseCheck) Animator(android.animation.Animator) FlingSpringAnim(com.android.launcher3.anim.FlingSpringAnim) ResourceProvider(com.android.systemui.plugins.ResourceProvider) ArrayList(java.util.ArrayList) OnAnimationEndListener(androidx.dynamicanimation.animation.DynamicAnimation.OnAnimationEndListener) List(java.util.List) Nullable(androidx.annotation.Nullable) R(com.android.launcher3.R) SpringAnimation(androidx.dynamicanimation.animation.SpringAnimation) FlingSpringAnim(com.android.launcher3.anim.FlingSpringAnim) Animator(android.animation.Animator) SpringForce(androidx.dynamicanimation.animation.SpringForce) ResourceProvider(com.android.systemui.plugins.ResourceProvider) SpringAnimation(androidx.dynamicanimation.animation.SpringAnimation) OnAnimationEndListener(androidx.dynamicanimation.animation.DynamicAnimation.OnAnimationEndListener)

Example 2 with SpringForce

use of androidx.dynamicanimation.animation.SpringForce in project android_packages_apps_Launcher3 by crdroidandroid.

the class RectFSpringAnim2 method start.

/**
 * Starts the fling/spring animation.
 * @param context The activity context.
 * @param velocityPxPerMs Velocity of swipe in px/ms.
 */
public void start(Context context, PointF velocityPxPerMs) {
    mRectXAnim = new SpringAnimation(this, RECT_CENTER_X).setStartValue(mCurrentCenterX).setStartVelocity(velocityPxPerMs.x * 1000).setSpring(new SpringForce(mTargetX).setStiffness(mXStiffness).setDampingRatio(mXDamping));
    mRectXAnim.addEndListener(((animation, canceled, centerX, velocityX) -> {
        mRectXAnimEnded = true;
        maybeOnEnd();
    }));
    mRectYAnim = new SpringAnimation(this, RECT_Y).setStartValue(mCurrentCenterY).setStartVelocity(velocityPxPerMs.y * 1000).setSpring(new SpringForce(mTargetY).setStiffness(mYStiffness).setDampingRatio(mYDamping));
    mRectYAnim.addEndListener(((animation, canceled, centerY, velocityY) -> {
        mRectYAnimEnded = true;
        maybeOnEnd();
    }));
    mRectScaleAnim = ObjectAnimator.ofFloat(this, PROGRESS, 0, 1f).setDuration(mDuration);
    mRectScaleAnim.setInterpolator(mCloseInterpolator);
    mRectScaleAnim.addListener(new AnimatorListenerAdapter() {

        @Override
        public void onAnimationEnd(Animator animation) {
            mRectScaleAnimEnded = true;
            maybeOnEnd();
        }
    });
    mValues = buildConfig();
    mRectScaleAnim.addUpdateListener(mValues);
    setCanRelease(false);
    mAnimsStarted = true;
    mRectXAnim.start();
    mRectYAnim.start();
    mRectScaleAnim.start();
    for (Animator.AnimatorListener animatorListener : mAnimatorListeners) {
        animatorListener.onAnimationStart(null);
    }
}
Also used : RectF(android.graphics.RectF) PathInterpolatorCompat(androidx.core.view.animation.PathInterpolatorCompat) Utilities(com.android.launcher3.Utilities) Context(android.content.Context) SpringForce(androidx.dynamicanimation.animation.SpringForce) PointF(android.graphics.PointF) Interpolator(android.view.animation.Interpolator) ObjectAnimator(android.animation.ObjectAnimator) FloatPropertyCompat(androidx.dynamicanimation.animation.FloatPropertyCompat) DynamicResource(com.android.launcher3.util.DynamicResource) Animator(android.animation.Animator) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) ResourceProvider(com.android.systemui.plugins.ResourceProvider) Property(android.util.Property) ArrayList(java.util.ArrayList) LINEAR(com.android.launcher3.anim.Interpolators.LINEAR) List(java.util.List) R(com.android.launcher3.R) Locale(java.util.Locale) Utilities.dpToPx(com.android.launcher3.Utilities.dpToPx) SpringAnimation(androidx.dynamicanimation.animation.SpringAnimation) PathParser(android.util.PathParser) ValueAnimator(android.animation.ValueAnimator) ObjectAnimator(android.animation.ObjectAnimator) Animator(android.animation.Animator) ValueAnimator(android.animation.ValueAnimator) SpringForce(androidx.dynamicanimation.animation.SpringForce) AnimatorListenerAdapter(android.animation.AnimatorListenerAdapter) SpringAnimation(androidx.dynamicanimation.animation.SpringAnimation)

Aggregations

Animator (android.animation.Animator)2 Context (android.content.Context)2 PointF (android.graphics.PointF)2 RectF (android.graphics.RectF)2 FloatPropertyCompat (androidx.dynamicanimation.animation.FloatPropertyCompat)2 SpringAnimation (androidx.dynamicanimation.animation.SpringAnimation)2 SpringForce (androidx.dynamicanimation.animation.SpringForce)2 R (com.android.launcher3.R)2 Utilities (com.android.launcher3.Utilities)2 DynamicResource (com.android.launcher3.util.DynamicResource)2 ResourceProvider (com.android.systemui.plugins.ResourceProvider)2 ArrayList (java.util.ArrayList)2 List (java.util.List)2 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)1 ObjectAnimator (android.animation.ObjectAnimator)1 ValueAnimator (android.animation.ValueAnimator)1 PathParser (android.util.PathParser)1 Property (android.util.Property)1 Interpolator (android.view.animation.Interpolator)1 Nullable (androidx.annotation.Nullable)1