一、ValueAnimator簡介
ValueAnimator是Android中用來控制動畫的類,其可以控制int、float、color等屬性的變化,從而實現動畫效果。
以下是一個簡單的代碼示例:
ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); animator.setDuration(1000); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float fraction = animation.getAnimatedFraction(); //根據動畫執行的百分比來進行相應的操作 } }); animator.start();
二、ValueAnimator的屬性設置
除了上述例子中的duration、ofFloat和addUpdateListener方法之外,ValueAnimator還提供了一系列屬性設置方法,下面介紹其中幾個常用的方法。
1. setInterpolator(Interpolator interpolator)
設置插值器,用於控制動畫執行過程中動畫數值的變化速率。例如:
animator.setInterpolator(new AccelerateDecelerateInterpolator());
2. setRepeatCount(int value) 和 setRepeatMode(int value)
設置動畫重複的次數和模式。
animator.setRepeatCount(2);//動畫重複3次,執行4次,因為第一次也算在內 animator.setRepeatMode(ValueAnimator.REVERSE);//反轉模式
3. setStartDelay(long startDelay)
設置動畫延遲開始的時間。
animator.setStartDelay(1000);//延遲1秒開始
三、ValueAnimator結合View的屬性動畫
ValueAnimator可以結合View的屬性進行動畫效果的實現。
1. 屬性動畫實例
以下是一個簡單的例子,其中通過動畫控制了View的alpha和scaleX屬性:
ValueAnimator animator = ValueAnimator.ofFloat(1f, 0f);//alpha屬性動畫 animator.setDuration(1000); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float alpha = (float) animation.getAnimatedValue(); view.setAlpha(alpha); float scaleX = (float) animation.getAnimatedValue(); view.setScaleX(scaleX); } }); animator.start();
2. ObjectAnimator實例
與ValueAnimator類似,還可以使用ObjectAnimator來控制View的屬性動畫效果。
ObjectAnimator animator = ObjectAnimator.ofFloat(view, "translationY", 0, 300);//控制View的縱向移動 animator.setDuration(1000); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.start();
四、總結
ValueAnimator是Android中用於控制動畫的類,其可以控制int、float、color等屬性的變化,結合View的屬性動畫可以實現豐富的動畫效果。另外,ValueAnimator還提供了一些常用的屬性設置方法,如插值器、重複模式、延遲開始等。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/240520.html