用法举例:
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 @Override24 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 @Override39 public void onAnimationStart(Animator arg0) {40 41 }42 43 @Override44 public void onAnimationRepeat(Animator arg0) {45 46 }47 48 @Override49 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 @Override60 public void onAnimationCancel(Animator arg0) {61 62 }63 });64 65 animator.setDuration(200);// 动画时间66 animator.start();// 启动动画67 }
运行效果图:
附加:安卓动画总结