android PropertyAnimator 在API 11 過後才引入的 它完全可以替代 TweenAnimation
PropertyAnimator 分成兩個類 ValueAnimator ObjectAnimator
ValueAnimator
看名字 就知道是 數值動畫 就是然一個值 從多少 到多少, 只是將類似動畫的效果用到了數值上面;
具體的作用本來是想寫一篇 理解筆記的但是看到大牛寫的一篇文章太詳細了,我就不在寫了,這裏推薦出來
點擊查看 : Animation——ValueAnimator基本使用
ObjectAnimator
ObjectAnimator其實是繼承至ValueAnimator
public final class ObjectAnimator extends ValueAnimator三種方法 創建ObjectAnimator
1、 java 代碼ObjectAnimator.ofXXX()的方式創建
//ivJack.getTranslationX(); //ivJack.setTranslationX(); // 就是凡是可以用set get方法得到的屬性都可以進行 屬性動畫 //如果不確定 屬性值的名字 就用set get 先嚐試一下 ObjectAnimator tranX = ObjectAnimator.ofFloat(ivJack,"translationX",100,300,200,500); //就是 x座標 先移動到100 再移動到300 再從300移動到200 再從200移動到500 tranX.setDuration(3000); //動畫執行一次的時長 重複一次就再加一倍 tranX.setRepeatCount(1);//重複的次數 tranX.setRepeatMode(ObjectAnimator.RESTART);//重複的方式 tranX.setStartDelay(1000);//開始延時 tranX.start();
2、第二種方式 先創建 PropertyValuesHolder
PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("scaleX",2f,0.5f,1); PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("scaleY",2f,0.5f,1); ObjectAnimator ob = ObjectAnimator.ofPropertyValuesHolder(ivJack, p1, p2); ob.start();
3、第三種方式 通過創建xml 文件
//加載xml 文件中加載的動畫 ObjectAnimator ro = (ObjectAnimator) AnimatorInflater.loadAnimator(this, R.animator.rotate_animator); //補間動畫用的是AnimationUtils 屬性動畫用的是AnimatorInflater ro.setTarget(ivJack); // 設置動畫對象 ro.start();
還要有一個 AnimatorSet類
AnimatorSet set = new AnimatorSet(); set.playSequentially(animator1,animator2,animator3);//有序播放 // set.playTogether(animator1,animator2,animator3);//一起播放 // set.play(animater1).with(Animater2).after(animator3).before(animator4);// 自定義順序播放 set.start();當然也可以通過xml代碼生成