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

写了个属性动画

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

        }
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,369评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,277评论 25 709
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,378评论 2 17
  • 【第二章】 “最近的新生有点嚣张啊…”“就是啊,尤其是那个莫宇谷,凭什么刚来不久就成了学生会的人啊!”高二楼里悉悉...
    蓝瓜2045阅读 3,101评论 0 0
  • 以前总认为爱情很美好,会很憧憬。可是当身处其中,有时又会觉得原来如此。 四年前和他相识,其实当时也没有想...
    您H阅读 1,794评论 0 0