这个不是坑,只是挺难查的。
一般情况下想搞个属性动画,用 ObjectAnimation 就行,在我写的 BaseActivity 中可以直接调用,调用方法如下:
moveAnimation(Object obj, String perference, float aimValue)
但是遇到要修改 View 的 Width 和 Height 的话就着急了,此时可以使用 ObjectAnimation 的如下方法来进行动画效果:
public void doAnim(View view, String po, int value) {
ViewWrapper viewWrapper = new ViewWrapper(view);
ObjectAnimator.ofInt(viewWrapper, po, value).setDuration(300).start();
}
private class ViewWrapper {
private View rView;
public ViewWrapper(View target) {
rView = target;
}
public int getWidth() {
return rView.getLayoutParams().width;
}
public void setWidth(int width) {
rView.getLayoutParams().width = width;
rView.requestLayout();
}
public int getHeight() {
return rView.getLayoutParams().height;
}
public void setHeight(int height) {
rView.getLayoutParams().height = height;
rView.requestLayout();
}
}
其中 view 是布局,value 是改变数值,time 是持续时间。
重写了 width 和 height 的 get 和 set 方法,保证能修改布局的宽高。
通过上述代码执行完动画后,即可修改view布局的宽度和高度,也就是说区别以往的 ScaleAnimation 的是实际可以改变view的宽高属性的。
下个版本的BaseActivity将集成此方法。
以上。