写了个属性动画
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator.ofFloat(imageView,"translationY",-100).start();
}
});
发现这个按钮无论点多少次都是只执行了第一次,why?
加log
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("属性动画","translationY"+imageView.getTranslationY());
ObjectAnimator.ofFloat(imageView,"translationY",-100).start();
}
});
打印如下
属性动画: translationY0.0 //第一次点击
属性动画: translationY-100.0 // 第二次点击
属性动画: translationY-100.0 //第三四五...
说明属性动画执行的时候是更改了对象属性的,更改之前和更改之后的属性如果都相同,那等同于没改,所以要想每次让对象执行一次,就要实时更新对象的属性值,如下:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator.ofFloat(imageView,"translationY",imageView.getTranslationY()-100).start();
}
});
网友评论