Search in sources :

Example 81 with LinearInterpolator

use of android.view.animation.LinearInterpolator in project AgentWeb by Justson.

the class WebProgress method startAnim.

private void startAnim(float value, boolean isAuto) {
    if (target == value)
        return;
    if (value < currentProgress)
        return;
    float v = (isAuto) ? 80f : value;
    if (mValueAnimator != null && mValueAnimator.isStarted()) {
        mValueAnimator.cancel();
    }
    //        Log.i("Info", "currentProgress:" + currentProgress + "  value:" + v);
    currentProgress = currentProgress == 0f ? 0.00000001f : currentProgress;
    mValueAnimator = ValueAnimator.ofFloat(currentProgress, v);
    mValueAnimator.setInterpolator(new LinearInterpolator());
    long duration = (long) Math.abs((v / 100f * screenWidth) - (currentProgress / 100f * screenWidth));
    /*默认每个像素十毫秒*/
    mValueAnimator.setDuration(isAuto ? duration * 8 : (long) (duration * weightDuration(v, currentProgress)));
    mValueAnimator.addUpdateListener(mAnimatorUpdateListener);
    mValueAnimator.addListener(mAnimatorListenerAdapter);
    mValueAnimator.start();
    TAG = STARTED;
    target = v;
}
Also used : LinearInterpolator(android.view.animation.LinearInterpolator)

Example 82 with LinearInterpolator

use of android.view.animation.LinearInterpolator in project android_frameworks_base by DirtyUnicorns.

the class StackView method transformViewForTransition.

/**
     * Animate the views between different relative indexes within the {@link AdapterViewAnimator}
     */
void transformViewForTransition(int fromIndex, int toIndex, final View view, boolean animate) {
    if (!animate) {
        ((StackFrame) view).cancelSliderAnimator();
        view.setRotationX(0f);
        LayoutParams lp = (LayoutParams) view.getLayoutParams();
        lp.setVerticalOffset(0);
        lp.setHorizontalOffset(0);
    }
    if (fromIndex == -1 && toIndex == getNumActiveViews() - 1) {
        transformViewAtIndex(toIndex, view, false);
        view.setVisibility(VISIBLE);
        view.setAlpha(1.0f);
    } else if (fromIndex == 0 && toIndex == 1) {
        // Slide item in
        ((StackFrame) view).cancelSliderAnimator();
        view.setVisibility(VISIBLE);
        int duration = Math.round(mStackSlider.getDurationForNeutralPosition(mYVelocity));
        StackSlider animationSlider = new StackSlider(mStackSlider);
        animationSlider.setView(view);
        if (animate) {
            PropertyValuesHolder slideInY = PropertyValuesHolder.ofFloat("YProgress", 0.0f);
            PropertyValuesHolder slideInX = PropertyValuesHolder.ofFloat("XProgress", 0.0f);
            ObjectAnimator slideIn = ObjectAnimator.ofPropertyValuesHolder(animationSlider, slideInX, slideInY);
            slideIn.setDuration(duration);
            slideIn.setInterpolator(new LinearInterpolator());
            ((StackFrame) view).setSliderAnimator(slideIn);
            slideIn.start();
        } else {
            animationSlider.setYProgress(0f);
            animationSlider.setXProgress(0f);
        }
    } else if (fromIndex == 1 && toIndex == 0) {
        // Slide item out
        ((StackFrame) view).cancelSliderAnimator();
        int duration = Math.round(mStackSlider.getDurationForOffscreenPosition(mYVelocity));
        StackSlider animationSlider = new StackSlider(mStackSlider);
        animationSlider.setView(view);
        if (animate) {
            PropertyValuesHolder slideOutY = PropertyValuesHolder.ofFloat("YProgress", 1.0f);
            PropertyValuesHolder slideOutX = PropertyValuesHolder.ofFloat("XProgress", 0.0f);
            ObjectAnimator slideOut = ObjectAnimator.ofPropertyValuesHolder(animationSlider, slideOutX, slideOutY);
            slideOut.setDuration(duration);
            slideOut.setInterpolator(new LinearInterpolator());
            ((StackFrame) view).setSliderAnimator(slideOut);
            slideOut.start();
        } else {
            animationSlider.setYProgress(1.0f);
            animationSlider.setXProgress(0f);
        }
    } else if (toIndex == 0) {
        // Make sure this view that is "waiting in the wings" is invisible
        view.setAlpha(0.0f);
        view.setVisibility(INVISIBLE);
    } else if ((fromIndex == 0 || fromIndex == 1) && toIndex > 1) {
        view.setVisibility(VISIBLE);
        view.setAlpha(1.0f);
        view.setRotationX(0f);
        LayoutParams lp = (LayoutParams) view.getLayoutParams();
        lp.setVerticalOffset(0);
        lp.setHorizontalOffset(0);
    } else if (fromIndex == -1) {
        view.setAlpha(1.0f);
        view.setVisibility(VISIBLE);
    } else if (toIndex == -1) {
        if (animate) {
            postDelayed(new Runnable() {

                public void run() {
                    view.setAlpha(0);
                }
            }, STACK_RELAYOUT_DURATION);
        } else {
            view.setAlpha(0f);
        }
    }
    // Implement the faked perspective
    if (toIndex != -1) {
        transformViewAtIndex(toIndex, view, animate);
    }
}
Also used : LinearInterpolator(android.view.animation.LinearInterpolator) ObjectAnimator(android.animation.ObjectAnimator) PropertyValuesHolder(android.animation.PropertyValuesHolder) Paint(android.graphics.Paint)

Example 83 with LinearInterpolator

use of android.view.animation.LinearInterpolator in project android_frameworks_base by ParanoidAndroid.

the class StackView method handlePointerUp.

private void handlePointerUp(MotionEvent ev) {
    int pointerIndex = ev.findPointerIndex(mActivePointerId);
    float newY = ev.getY(pointerIndex);
    int deltaY = (int) (newY - mInitialY);
    mLastInteractionTime = System.currentTimeMillis();
    if (mVelocityTracker != null) {
        mVelocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
        mYVelocity = (int) mVelocityTracker.getYVelocity(mActivePointerId);
    }
    if (mVelocityTracker != null) {
        mVelocityTracker.recycle();
        mVelocityTracker = null;
    }
    if (deltaY > mSwipeThreshold && mSwipeGestureType == GESTURE_SLIDE_DOWN && mStackSlider.mMode == StackSlider.NORMAL_MODE) {
        // We reset the gesture variable, because otherwise we will ignore showPrevious() /
        // showNext();
        mSwipeGestureType = GESTURE_NONE;
        // Swipe threshold exceeded, swipe down
        if (mStackMode == ITEMS_SLIDE_UP) {
            showPrevious();
        } else {
            showNext();
        }
        mHighlight.bringToFront();
    } else if (deltaY < -mSwipeThreshold && mSwipeGestureType == GESTURE_SLIDE_UP && mStackSlider.mMode == StackSlider.NORMAL_MODE) {
        // We reset the gesture variable, because otherwise we will ignore showPrevious() /
        // showNext();
        mSwipeGestureType = GESTURE_NONE;
        // Swipe threshold exceeded, swipe up
        if (mStackMode == ITEMS_SLIDE_UP) {
            showNext();
        } else {
            showPrevious();
        }
        mHighlight.bringToFront();
    } else if (mSwipeGestureType == GESTURE_SLIDE_UP) {
        // Didn't swipe up far enough, snap back down
        int duration;
        float finalYProgress = (mStackMode == ITEMS_SLIDE_DOWN) ? 1 : 0;
        if (mStackMode == ITEMS_SLIDE_UP || mStackSlider.mMode != StackSlider.NORMAL_MODE) {
            duration = Math.round(mStackSlider.getDurationForNeutralPosition());
        } else {
            duration = Math.round(mStackSlider.getDurationForOffscreenPosition());
        }
        StackSlider animationSlider = new StackSlider(mStackSlider);
        PropertyValuesHolder snapBackY = PropertyValuesHolder.ofFloat("YProgress", finalYProgress);
        PropertyValuesHolder snapBackX = PropertyValuesHolder.ofFloat("XProgress", 0.0f);
        ObjectAnimator pa = ObjectAnimator.ofPropertyValuesHolder(animationSlider, snapBackX, snapBackY);
        pa.setDuration(duration);
        pa.setInterpolator(new LinearInterpolator());
        pa.start();
    } else if (mSwipeGestureType == GESTURE_SLIDE_DOWN) {
        // Didn't swipe down far enough, snap back up
        float finalYProgress = (mStackMode == ITEMS_SLIDE_DOWN) ? 0 : 1;
        int duration;
        if (mStackMode == ITEMS_SLIDE_DOWN || mStackSlider.mMode != StackSlider.NORMAL_MODE) {
            duration = Math.round(mStackSlider.getDurationForNeutralPosition());
        } else {
            duration = Math.round(mStackSlider.getDurationForOffscreenPosition());
        }
        StackSlider animationSlider = new StackSlider(mStackSlider);
        PropertyValuesHolder snapBackY = PropertyValuesHolder.ofFloat("YProgress", finalYProgress);
        PropertyValuesHolder snapBackX = PropertyValuesHolder.ofFloat("XProgress", 0.0f);
        ObjectAnimator pa = ObjectAnimator.ofPropertyValuesHolder(animationSlider, snapBackX, snapBackY);
        pa.setDuration(duration);
        pa.start();
    }
    mActivePointerId = INVALID_POINTER;
    mSwipeGestureType = GESTURE_NONE;
}
Also used : LinearInterpolator(android.view.animation.LinearInterpolator) ObjectAnimator(android.animation.ObjectAnimator) PropertyValuesHolder(android.animation.PropertyValuesHolder) Paint(android.graphics.Paint)

Example 84 with LinearInterpolator

use of android.view.animation.LinearInterpolator in project android_frameworks_base by ParanoidAndroid.

the class SlidingTab method startAnimating.

void startAnimating(final boolean holdAfter) {
    mAnimating = true;
    final Animation trans1;
    final Animation trans2;
    final Slider slider = mCurrentSlider;
    final Slider other = mOtherSlider;
    final int dx;
    final int dy;
    if (isHorizontal()) {
        int right = slider.tab.getRight();
        int width = slider.tab.getWidth();
        int left = slider.tab.getLeft();
        int viewWidth = getWidth();
        // how much of tab to show at the end of anim
        int holdOffset = holdAfter ? 0 : width;
        dx = slider == mRightSlider ? -(right + viewWidth - holdOffset) : (viewWidth - left) + viewWidth - holdOffset;
        dy = 0;
    } else {
        int top = slider.tab.getTop();
        int bottom = slider.tab.getBottom();
        int height = slider.tab.getHeight();
        int viewHeight = getHeight();
        // how much of tab to show at end of anim
        int holdOffset = holdAfter ? 0 : height;
        dx = 0;
        dy = slider == mRightSlider ? (top + viewHeight - holdOffset) : -((viewHeight - bottom) + viewHeight - holdOffset);
    }
    trans1 = new TranslateAnimation(0, dx, 0, dy);
    trans1.setDuration(ANIM_DURATION);
    trans1.setInterpolator(new LinearInterpolator());
    trans1.setFillAfter(true);
    trans2 = new TranslateAnimation(0, dx, 0, dy);
    trans2.setDuration(ANIM_DURATION);
    trans2.setInterpolator(new LinearInterpolator());
    trans2.setFillAfter(true);
    trans1.setAnimationListener(new AnimationListener() {

        public void onAnimationEnd(Animation animation) {
            Animation anim;
            if (holdAfter) {
                anim = new TranslateAnimation(dx, dx, dy, dy);
                // plenty of time for transitions
                anim.setDuration(1000);
                mAnimating = false;
            } else {
                anim = new AlphaAnimation(0.5f, 1.0f);
                anim.setDuration(ANIM_DURATION);
                resetView();
            }
            anim.setAnimationListener(mAnimationDoneListener);
            /* Animation can be the same for these since the animation just holds */
            mLeftSlider.startAnimation(anim, anim);
            mRightSlider.startAnimation(anim, anim);
        }

        public void onAnimationRepeat(Animation animation) {
        }

        public void onAnimationStart(Animation animation) {
        }
    });
    slider.hideTarget();
    slider.startAnimation(trans1, trans2);
}
Also used : LinearInterpolator(android.view.animation.LinearInterpolator) TranslateAnimation(android.view.animation.TranslateAnimation) AlphaAnimation(android.view.animation.AlphaAnimation) Animation(android.view.animation.Animation) TranslateAnimation(android.view.animation.TranslateAnimation) AnimationListener(android.view.animation.Animation.AnimationListener) AlphaAnimation(android.view.animation.AlphaAnimation)

Example 85 with LinearInterpolator

use of android.view.animation.LinearInterpolator in project android_packages_apps_DUI by DirtyUnicorns.

the class FlingRipple method startHover.

private void startHover() {
    if (eventCancelled)
        return;
    if (hoverAnimator != null) {
        hoverAnimator.cancel();
    }
    final float radius = (float) (Math.sqrt(Math.pow(mHost.getWidth(), 2) + Math.pow(mHost.getHeight(), 2)) * 1.2f);
    hoverAnimator = ObjectAnimator.ofFloat(this, radiusProperty, rippleDiameter, radius).setDuration(HOVER_DURATION);
    hoverAnimator.setInterpolator(new LinearInterpolator());
    hoverAnimator.start();
}
Also used : LinearInterpolator(android.view.animation.LinearInterpolator)

Aggregations

LinearInterpolator (android.view.animation.LinearInterpolator)217 ValueAnimator (android.animation.ValueAnimator)65 Animator (android.animation.Animator)42 ObjectAnimator (android.animation.ObjectAnimator)39 Paint (android.graphics.Paint)30 ArrayList (java.util.ArrayList)28 AlphaAnimation (android.view.animation.AlphaAnimation)27 RotateAnimation (android.view.animation.RotateAnimation)24 AnimatorListenerAdapter (android.animation.AnimatorListenerAdapter)22 PropertyValuesHolder (android.animation.PropertyValuesHolder)18 Animatable (android.graphics.drawable.Animatable)17 View (android.view.View)17 Animation (android.view.animation.Animation)17 Transformation (android.view.animation.Transformation)17 AnimatorSet (android.animation.AnimatorSet)14 DecelerateInterpolator (android.view.animation.DecelerateInterpolator)14 TranslateAnimation (android.view.animation.TranslateAnimation)12 AccelerateInterpolator (android.view.animation.AccelerateInterpolator)11 AccelerateDecelerateInterpolator (android.view.animation.AccelerateDecelerateInterpolator)9 AnimationListener (android.view.animation.Animation.AnimationListener)8