类android.animation.ValueAnimator源码实例Demo

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

private void revealImageCircular() {
    int x = getX();
    int y = getY();
    int radius = getRadius();

    ValueAnimator anim =
            ViewAnimationUtils.createCircularReveal(mImageView, x, y, 0, radius);

    anim.setDuration( 1000 );
    anim.addListener( new AnimatorListenerAdapter() {
        @Override
        public void onAnimationStart(Animator animation) {
            super.onAnimationStart(animation);
            mImageView.setVisibility( View.VISIBLE );
        }
    });

    anim.start();
}
 
源代码2 项目: SphereLayout   文件: SLTouchListener.java
public SLTouchListener(SphereLayout sphereLayout) {
    mSphereLayout = sphereLayout;
    mTouchSlop = ViewConfiguration.get(mSphereLayout.getContext()).getScaledTouchSlop();
    mInterpolator = new SpringInterpolator();
    mState = new RotateState();

    mRotateAnimator = new ValueAnimator();
    mRotateAnimator.setInterpolator(mInterpolator);
    mRotateAnimator.setIntValues(MAX_ROTATE_DEGREE, 0);
    mRotateAnimator.setDuration(DURATION);

    mRotateAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            mState.rotateDegree = (Integer) animation.getAnimatedValue();
            mSphereLayout.rotate(mState.direction, mState.rotateDegree);
        }
    });

    mFixAnimator = new ValueAnimator();
    mFixAnimator.setInterpolator(new DecelerateInterpolator());
}
 
源代码3 项目: VirtualLocation   文件: PreciseLocationActivity.java
/**
 * 使组件变回原有形状
 * @param view
 */
private void repaintView(final View view){
    AnimatorSet set = new AnimatorSet();

    ValueAnimator animator = ValueAnimator.ofFloat(width, 0);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float value = (Float) animation.getAnimatedValue();
            ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mBeginLocation
                    .getLayoutParams();
            params.leftMargin = (int) value;
            params.rightMargin = (int) value;
            view.setLayoutParams(params);
        }
    });

    ObjectAnimator animator2 = ObjectAnimator.ofFloat(view,
            "scaleX", 0.5f, 1f);
    set.setDuration(1000);
    set.setInterpolator(new AccelerateDecelerateInterpolator());
    set.playTogether(animator, animator2);
    set.start();
}
 
源代码4 项目: RefreshLayout   文件: RefreshAnimeUtil.java
public static void startScaleAnime(final View view,
                                   float newScale, Animator.AnimatorListener listener) {
    ValueAnimator anime = ValueAnimator.ofFloat(view.getScaleX(), newScale);
    anime.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float s = Float.parseFloat(animation.getAnimatedValue().toString());
            view.setScaleX(s);
            view.setScaleY(s);
        }
    });
    if (listener != null) {
        anime.addListener(listener);
    }
    anime.setDuration(mAnimeDuration);
    anime.start();
}
 
源代码5 项目: AndroidDemo   文件: PointView.java
private void startAnimation() {
	Point startPoint = new Point(RADIUS, RADIUS);
	Point endPoint = new Point(getWidth() - RADIUS, getHeight() - RADIUS);
	ValueAnimator anim = ValueAnimator.ofObject(new PointEvaluator(), startPoint, endPoint);
	anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
		@Override
		public void onAnimationUpdate(ValueAnimator animation) {
			currentPoint = (Point) animation.getAnimatedValue();
			invalidate();
		}
	});
	ObjectAnimator anim2 = ObjectAnimator.ofObject(this, "color", new ColorEvaluator(),
			"#00FFFF", "#FF1100");
	AnimatorSet animSet = new AnimatorSet();
	animSet.play(anim).with(anim2);
	animSet.setDuration(5000);
	animSet.start();
}
 
源代码6 项目: crystal-preloaders   文件: Chronos.java
@Override
protected List<ValueAnimator> setupAnimation() {
    valueAnimator = ValueAnimator.ofInt(0, 360);
    valueAnimator.setDuration(7000);
    valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    valueAnimator.setRepeatMode(ValueAnimator.RESTART);
    valueAnimator.setInterpolator(new LinearInterpolator());
    valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            degree = (int) animation.getAnimatedValue();
            getTarget().invalidate();
        }
    });

    // create animator list
    final List<ValueAnimator> animators = new ArrayList<>();
    animators.add(valueAnimator);

    return animators;
}
 
源代码7 项目: SmartLoadingView   文件: SmartLoadingView.java
/**
 * 绘制对勾的动画
 */
private void set_draw_ok_animation() {
    animator_draw_ok = ValueAnimator.ofFloat(1, 0);
    animator_draw_ok.setDuration(duration);
    animator_draw_ok.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            startDrawOk = true;
            isDrawLoading = false;
            float value = (Float) animation.getAnimatedValue();
            effect = new DashPathEffect(new float[]{pathMeasure.getLength(), pathMeasure.getLength()}, value * pathMeasure.getLength());
            okPaint.setPathEffect(effect);
            invalidate();

        }
    });
}
 
源代码8 项目: ActionAnimatorSet   文件: ActionAnimatorSet.java
private void addObservable() {
    //如果是With和After的,则设置AnimatorListener监听,With和After共用一个监听
    //如果是Between的,则设置UpdateListener监听
    for (int i = 0; i < mAllNodes.size(); ++i) {
        AnimNode node = mAllNodes.get(i);
        if (node.withAbservable != null
                && node.withAbservable.size() > 0)
            node.mAnim.addListener(new WithAndAfterListener(node));
        if (node.afterAbservable != null &&
                node.afterAbservable.size() > 0)
            if (node.mAnim.getListeners() == null
                    || node.mAnim.getListeners().size() == 0)
                node.mAnim.addListener(new WithAndAfterListener(node));
        if (node.betweenAbservable != null &&
                node.betweenAbservable.size() > 0)
            if (node.mAnim instanceof ValueAnimator)
                ((ValueAnimator) node.mAnim).addUpdateListener(new BetweenListener(node));
    }
}
 
源代码9 项目: CoolAndroidAnim   文件: DLetter.java
@Override
public void startAnim() {
    mAnimator = ValueAnimator.ofFloat(0, 1).setDuration(mDuration);
    mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float factor = (float) animation.getAnimatedValue();
            //竖线
            mSecPoint.y = (int) (mFirPoint.y - mLineLength * factor);
            if (factor > 0.333f) {
                //2/3处开始画圆
                float zoroToOne = (factor - 0.333f) * 3 / 2;
                mSweepAngle = -(int) (360 * zoroToOne);
            }
        }
    });
    mAnimator.start();
}
 
源代码10 项目: OXChart   文件: BaseChart.java
protected void startAnimation(Canvas canvas) {
    if(anim!=null){
        anim.cancel();
    }
    LogUtil.w(TAG, "开始绘制动画");
    anim = initAnim();
    if(anim==null){
        drawChart(canvas);
    }else{
        anim.setInterpolator(new AccelerateDecelerateInterpolator());
        anim.addUpdateListener((ValueAnimator animation)->{
            evaluatorData(animation);
            invalidate();
        });
        anim.setDuration(animDuration);
        anim.start();
    }
}
 
源代码11 项目: RollSquareView   文件: RollSquareView.java
private ValueAnimator createRollValueAnimator() {
        ValueAnimator rollAnim = ValueAnimator.ofFloat(0, 90).setDuration(mSpeed);
//        rollAnim.setInterpolator(mRollInterpolator);
        rollAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                Object animatedValue = animation.getAnimatedValue();
                mRotateDegree = (float) animatedValue;
                if (!isHardwareAccelerated()) {
                    invalidate(mDirtyRect);
                } else {
                    invalidate();
                }
            }
        });
        return rollAnim;
    }
 
源代码12 项目: scene   文件: Case3Scene.java
@NonNull
@Override
protected Animator onPopAnimator(final AnimationInfo fromInfo, final AnimationInfo toInfo) {
    final View toView = toInfo.mSceneView;
    final View fromView = fromInfo.mSceneView;

    ValueAnimator fromAlphaAnimator = ObjectAnimator.ofFloat(fromView, View.ALPHA, 1.0f, 0.0f);
    fromAlphaAnimator.setInterpolator(new LinearInterpolator());
    fromAlphaAnimator.setDuration(150 * 20);
    fromAlphaAnimator.setStartDelay(50 * 20);

    ValueAnimator fromTranslateAnimator = ObjectAnimator.ofFloat(fromView, View.TRANSLATION_Y, 0, 0.08f * toView.getHeight());
    fromTranslateAnimator.setInterpolator(new AccelerateInterpolator(2));
    fromTranslateAnimator.setDuration(200 * 20);

    ValueAnimator toAlphaAnimator = ObjectAnimator.ofFloat(toView, View.ALPHA, 0.7f, 1.0f);
    toAlphaAnimator.setInterpolator(new LinearOutSlowInInterpolator());
    toAlphaAnimator.setDuration(20 * 20);
    return TransitionUtils.mergeAnimators(fromAlphaAnimator, fromTranslateAnimator, toAlphaAnimator);
}
 
源代码13 项目: widgetlab   文件: BouncingSlidingDotView.java
@NonNull
private AnimatorSet getMoveAnimator(long ratioAnimationTotalDuration) {
    AnimatorSet moveAnimatorSet = new AnimatorSet();

    ValueAnimator slidingAnimator = ValueAnimator.ofInt(startLeft, 0);
    slidingAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animator) {
            targetLeft = (int) animator.getAnimatedValue();
            invalidate();
        }
    });
    slidingAnimator.setInterpolator(new LinearInterpolator());
    slidingAnimator.setDuration(ratioAnimationTotalDuration);

    AnimatorSet bounceSet = getBounceAnimatorSet(ratioAnimationTotalDuration);

    moveAnimatorSet.playTogether(slidingAnimator, bounceSet);
    return moveAnimatorSet;
}
 
源代码14 项目: FlycoTabLayout   文件: CommonTabLayout.java
@Override
public void onAnimationUpdate(ValueAnimator animation) {
    View currentTabView = mTabsContainer.getChildAt(this.mCurrentTab);
    IndicatorPoint p = (IndicatorPoint) animation.getAnimatedValue();
    mIndicatorRect.left = (int) p.left;
    mIndicatorRect.right = (int) p.right;

    if (mIndicatorWidth < 0) {   //indicatorWidth小于0时,原jpardogo's PagerSlidingTabStrip

    } else {//indicatorWidth大于0时,圆角矩形以及三角形
        float indicatorLeft = p.left + (currentTabView.getWidth() - mIndicatorWidth) / 2;

        mIndicatorRect.left = (int) indicatorLeft;
        mIndicatorRect.right = (int) (mIndicatorRect.left + mIndicatorWidth);
    }
    invalidate();
}
 
源代码15 项目: Camera2   文件: AnimatedCircleDrawable.java
public void animateToFullSize()
{
    final ValueAnimator animator =
            ValueAnimator.ofInt(getLevel(), DRAWABLE_MAX_LEVEL);
    animator.setDuration(CIRCLE_ANIM_DURATION_MS);
    animator.setInterpolator(Gusterpolator.INSTANCE);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
    {
        @Override
        public void onAnimationUpdate(ValueAnimator animation)
        {
            setLevel((Integer) animation.getAnimatedValue());
        }
    });
    animator.start();
}
 
源代码16 项目: ReadMark   文件: RLetterS.java
@Override
public void startAnim() {
    mAnimator = ValueAnimator.ofFloat(0, 1);
    mAnimator.setDuration(mDuration);
    mAnimator.setRepeatCount(0);
    mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float factor = (float) animation.getAnimatedValue();
            mSweepArg = (int) (90 * factor);
            mSecPoint.y = (int) (mFirPoint.y + 2 * MAX_RADIUS_CIRCLE * factor);

        }
    });
    mAnimator.start();
}
 
源代码17 项目: LaunchEnr   文件: DragView.java
private void animateFilterTo(float[] targetFilter) {
    float[] oldFilter = mCurrentFilter == null ? new ColorMatrix().getArray() : mCurrentFilter;
    mCurrentFilter = Arrays.copyOf(oldFilter, oldFilter.length);

    if (mFilterAnimator != null) {
        mFilterAnimator.cancel();
    }
    mFilterAnimator = ValueAnimator.ofObject(new FloatArrayEvaluator(mCurrentFilter),
            oldFilter, targetFilter);
    mFilterAnimator.setDuration(COLOR_CHANGE_DURATION);
    mFilterAnimator.addUpdateListener(new AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            mPaint.setColorFilter(new ColorMatrixColorFilter(mCurrentFilter));
            invalidate();
        }
    });
    mFilterAnimator.start();
}
 
源代码18 项目: SprintNBA   文件: MaterialWaveView.java
@Override
public void onRefreshing(MaterialRefreshLayout br) {
    setHeadHeight((int) (Util.dip2px(getContext(), DefaulHeadHeight)));
    ValueAnimator animator = ValueAnimator.ofInt(getWaveHeight(),0);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            //Log.i("anim", "value--->" + (int) animation.getAnimatedValue());
            setWaveHeight((int) animation.getAnimatedValue());
            invalidate();
        }
    });
    animator.setInterpolator(new BounceInterpolator());
    animator.setDuration(200);
    animator.start();
}
 
源代码19 项目: Slide   文件: CreateCardView.java
private static ValueAnimator slideAnimator(int start, int end, final View v) {
    ValueAnimator animator = ValueAnimator.ofInt(start, end);
    animator.setInterpolator(new FastOutSlowInInterpolator());

    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            //Update Height
            int value = (Integer) valueAnimator.getAnimatedValue();
            ViewGroup.LayoutParams layoutParams = v.getLayoutParams();
            layoutParams.height = value;
            v.setLayoutParams(layoutParams);
        }
    });
    return animator;
}
 
源代码20 项目: BottomNavigation   文件: BottomNavigationTab.java
public void unSelect(boolean setActiveColor, int animationDuration) {
    isActive = false;

    ValueAnimator animator = ValueAnimator.ofInt(containerView.getPaddingTop(), paddingTopInActive);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            containerView.setPadding(containerView.getPaddingLeft(),
                    (Integer) valueAnimator.getAnimatedValue(),
                    containerView.getPaddingRight(),
                    containerView.getPaddingBottom());
        }
    });
    animator.setDuration(animationDuration);
    animator.start();

    labelView.setTextColor(mInActiveColor);
    iconView.setSelected(false);

    if (badgeItem != null) {
        badgeItem.unSelect();
    }
}
 
源代码21 项目: UltimateAndroid   文件: DownloadProgressBar.java
private void setCurrentPlayTimeByStateAndPlay(long[] tab, State mState) {
    switch (mState) {
        case ANIMATING_LINE_TO_DOT:
            mArrowToLineAnimatorSet.start();
            for (int i = 0; i < mArrowToLineAnimatorSet.getChildAnimations().size(); i++) {
                ((ValueAnimator) mArrowToLineAnimatorSet.getChildAnimations().get(i)).setCurrentPlayTime(tab[i]);
            }
            break;
        case ANIMATING_PROGRESS:
            mProgressAnimationSet.start();
            for (int i = 0; i < mProgressAnimationSet.getChildAnimations().size(); i++) {
                ((ValueAnimator) mProgressAnimationSet.getChildAnimations().get(i)).setCurrentPlayTime(tab[i]);
            }
            break;
        case ANIMATING_ERROR:
            mErrorAnimation.start();
            mErrorAnimation.setCurrentPlayTime(tab[0]);
            break;
        case ANIMATING_SUCCESS:
            mSuccessAnimation.start();
            mSuccessAnimation.setCurrentPlayTime(tab[0]);
            break;
    }
}
 
源代码22 项目: LaunchEnr   文件: SwipeHelper.java
private void snapChild(final View animView, final float targetLeft, float velocity) {
    final boolean canBeDismissed = mCallback.canChildBeDismissed(animView);
    AnimatorUpdateListener updateListener = new AnimatorUpdateListener() {
        public void onAnimationUpdate(ValueAnimator animation) {
            onTranslationUpdate(animView, (float) animation.getAnimatedValue(), canBeDismissed);
        }
    };

    Animator anim = getViewTranslationAnimator(animView, targetLeft, updateListener);
    if (anim == null) {
        return;
    }
    int duration = SNAP_ANIM_LEN;
    anim.setDuration(duration);
    anim.addListener(new AnimatorListenerAdapter() {
        public void onAnimationEnd(Animator animator) {
            mSnappingChild = false;
            updateSwipeProgressFromOffset(animView, canBeDismissed);
            mCallback.onChildSnappedBack(animView, targetLeft);
        }
    });
    prepareSnapBackAnimation(animView, anim);
    mSnappingChild = true;
    anim.start();
}
 
源代码23 项目: narrate-android   文件: PreferenceCard.java
protected void animateClosed() {
    mExpanded = false;
    int toHeight = gap * 2;
    toHeight += getChildAt(0).getHeight();

    ValueAnimator anim = ValueAnimator.ofInt(getHeight(), toHeight);
    anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            getLayoutParams().height = (int) animation.getAnimatedValue();
            requestLayout();
        }
    });
    anim.setInterpolator(new DecelerateInterpolator());
    anim.start();
}
 
源代码24 项目: android_9.0.0_r45   文件: DragState.java
private ValueAnimator createCancelAnimationLocked() {
    final ValueAnimator animator = ValueAnimator.ofPropertyValuesHolder(
            PropertyValuesHolder.ofFloat(
                    ANIMATED_PROPERTY_X, mCurrentX - mThumbOffsetX, mCurrentX),
            PropertyValuesHolder.ofFloat(
                    ANIMATED_PROPERTY_Y, mCurrentY - mThumbOffsetY, mCurrentY),
            PropertyValuesHolder.ofFloat(ANIMATED_PROPERTY_SCALE, 1, 0),
            PropertyValuesHolder.ofFloat(ANIMATED_PROPERTY_ALPHA, mOriginalAlpha, 0));
    final AnimationListener listener = new AnimationListener();
    animator.setDuration(MIN_ANIMATION_DURATION_MS);
    animator.setInterpolator(mCubicEaseOutInterpolator);
    animator.addListener(listener);
    animator.addUpdateListener(listener);

    mService.mAnimationHandler.post(() -> animator.start());
    return animator;
}
 
源代码25 项目: AndroidStudyDemo   文件: PropertyAnimActivity.java
public void testObjectAnimator(View v) {
    if (v.getId() == R.id.sdi_objectanimator_btn) {
        // 简单示例:View的横向移动
        ObjectAnimator.ofFloat(mAnimView, "translationX", 0.0f, -200.0f)
                .setDuration(C.Int.ANIM_DURATION * 2)
                .start();
    } else {
        // 复合示例:View弹性落下然后弹起,执行一次
        ObjectAnimator yBouncer = ObjectAnimator.ofFloat(mAnimView, "y", mAnimView.getY(), 400.0f);
        yBouncer.setDuration(C.Int.ANIM_DURATION * 2);
        // 设置插值器(用于调节动画执行过程的速度)
        yBouncer.setInterpolator(new BounceInterpolator());
        // 设置重复次数(缺省为0,表示不重复执行)
        yBouncer.setRepeatCount(1);
        // 设置重复模式(RESTART或REVERSE),重复次数大于0或INFINITE生效
        yBouncer.setRepeatMode(ValueAnimator.REVERSE);
        // 设置动画开始的延时时间(200ms)
        yBouncer.setStartDelay(200);
        yBouncer.start();
    }
}
 
private void fadeIn() {
    int colorFrom = Color.parseColor("#00000000");
    int colorTo = Color.parseColor("#40000000");
    ValueAnimator colorAnimation = ValueAnimator.ofObject(new ArgbEvaluator(), colorFrom, colorTo);
    colorAnimation.setDuration(250); // milliseconds
    colorAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

        @Override
        public void onAnimationUpdate(ValueAnimator animator) {
            setBackgroundColor((int) animator.getAnimatedValue());
        }

    });
    colorAnimation.start();
}
 
源代码27 项目: BeerSwipeRefresh   文件: BeerView.java
@Override protected void onDetachedFromWindow() {
  if (mAlphaAnimator != null) {
    mAlphaAnimator.end();
    mAlphaAnimator.removeAllUpdateListeners();
  }
  for (ValueAnimator animator : mFrothAnimators) {
    if (animator != null) {
      animator.end();
      animator.removeAllUpdateListeners();
    }
  }
  super.onDetachedFromWindow();
}
 
源代码28 项目: PinchImageView   文件: PinchImageView.java
@Override
public void onAnimationUpdate(ValueAnimator animation) {
    //移动图像并给出结果
    boolean result = scrollBy(mVector[0], mVector[1]);
    //衰减速度
    mVector[0] *= FLING_DAMPING_FACTOR;
    mVector[1] *= FLING_DAMPING_FACTOR;
    //速度太小或者不能移动了就结束
    if (!result || MathUtils.getDistance(0, 0, mVector[0], mVector[1]) < 1f) {
        animation.cancel();
    }
}
 
public ChartViewportAnimatorV14(Chart chart) {
    this.chart = chart;
    animator = ValueAnimator.ofFloat(0.0f, 1.0f);
    animator.addListener(this);
    animator.addUpdateListener(this);
    animator.setDuration(FAST_ANIMATION_DURATION);
}
 
源代码30 项目: PieChartView   文件: PieChartView.java
private void startAnim() {
    animator = ValueAnimator.ofFloat(0, 360f * 2);
    animator.setDuration(animDuration);
    animator.setInterpolator(new LinearInterpolator());
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            float value = (float) animation.getAnimatedValue();
            if (value < 360f) {
                offRadius = value;
                offLine = 0;
                textAlpha = 0;
            } else if (value >= 360f) {
                offRadius = 360f;
                offLine = (value - 360f) / 360f;
                if (offLine > 0.5f) {
                    textAlpha = (int) (255 * ((offLine - 0.5f) / 0.5f));
                } else {
                    textAlpha = 0;
                }
            } else if (value == 360f * 2) {
                offRadius = 360f;
                offLine = 1.0f;
                textAlpha = 255;
            }
            postInvalidate();
        }
    });
    animator.start();
}