属性动画只能运行一次吗,非也

2017-02-20  本文已影响77人  离人歌

写了个属性动画

    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();

        }
    });
上一篇 下一篇

猜你喜欢

热点阅读