用法舉例:
1. ValueAnimator animator = ValueAnimator.ofInt(0,100);//定義animator
2. animator.addUpdateListener//添加更新監聽事件
3. animator.setDuration//設置屬性動畫時長
4. animator.start//開啟屬性動畫
報錯說明api版本太低,要導入nineold jar包
也許是開發者他女兒9歲了的時候開發出來的兼容包,哈哈
nineoldandroids-2.4.0.jar
java代碼:
1 private boolean isOpen = false;// 標記安全描述開關狀態,默認關 2 3 // 打開或者關閉安全描述信息(如果是打開狀態就關閉,如果是關閉狀態就打開) 4 // 導入jar包: nineoldandroids-2.4.0.jar 5 protected void toggle() { 6 ValueAnimator animator = null; 7 if (isOpen) { 8 // 關閉 9 isOpen = false; 10 // 屬性動畫 11 animator = ValueAnimator.ofInt(mDesHeight, 0);// 從某個值變化到某個值 12 } else { 13 // 開啟 14 isOpen = true; 15 // 屬性動畫 16 animator = ValueAnimator.ofInt(0, mDesHeight); 17 } 18 19 // 動畫更新的監聽 20 animator.addUpdateListener(new AnimatorUpdateListener() { 21 22 // 啟動動畫之后, 會不斷回調此方法來獲取最新的值 23 @Override 24 public void onAnimationUpdate(ValueAnimator animator) { 25 // 獲取最新的高度值 26 Integer height = (Integer) animator.getAnimatedValue(); 27 28 System.out.println("最新高度:" + height); 29 30 // 重新修改布局高度 31 mParams.height = height; 32 llDesRoot.setLayoutParams(mParams); 33 } 34 }); 35 36 animator.addListener(new AnimatorListener() { 37 38 @Override 39 public void onAnimationStart(Animator arg0) { 40 41 } 42 43 @Override 44 public void onAnimationRepeat(Animator arg0) { 45 46 } 47 48 @Override 49 public void onAnimationEnd(Animator arg0) { 50 // 動畫結束的事件 51 // 更新小箭頭的方向 52 if (isOpen) { 53 ivArrow.setImageResource(R.drawable.arrow_up); 54 } else { 55 ivArrow.setImageResource(R.drawable.arrow_down); 56 } 57 } 58 59 @Override 60 public void onAnimationCancel(Animator arg0) { 61 62 } 63 }); 64 65 animator.setDuration(200);// 動畫時間 66 animator.start();// 啟動動畫 67 }
運行效果圖: