当前位置: 首页 > news >正文

坑!为什么View.startAnimation不起作用?

最近想做一个自定义的动画效果,第一个想到的方式是继承Animation,利用它的applyTransformation这个方法来实现,其实也可以自己写线程,定时抛一个事件来处理,其实是一样的,只是直接继承这个很方便。

// 先定义一下动画
Animation myAnimation = new Animation() {
    @Override
    protected void applyTransformation(float interpolatedTime, Transformation t) {
        // interpolatedTime: [0.0, 1.0] 表示动画执行进度
        // 利用这个值,做一点自己想做的事情就好了
    }
};

myAnimation.setDuration(500);
someView.startAnimation(myAnimation);

理论上来说,这样调用完就ok了,接下来系统会调用applyTransformation来做我想做的事情,结果却不起作用。

我还试了一下将上面这一坨代码放到post(Runnable)去执行,结果依然不行。

在三观都快崩溃的时候,发现,我整个someView好像是invisible的,可能和这个有关,我就换了一个别的View来start这个动画。

诶!就TM好了……

其实这里不管什么view来startAnimation都是一样的,只是想借用Animation的applyTransformation来做一些事情。

但是没想到startAnimation的时候,如果这个View是不可见的,或者是gone的,就会导致传进去的Animation对象不执行。嗯,这是一个坑。

看了一下View里面的源码,发现确实有一些地方判断了如果不是visible的,那么就不调用invalidate方法,也就不会去处理Animation的事情。

以后startAnimation的时候,一定要选一个总是可见的View哦,比如topBar,什么什么的……

相关文章:

  • Android零基础入门第41节:使用SimpleAdapter
  • 速度快的国外镜像国家
  • Android 图形系统概述
  • python之simplejson,Python版的简单、 快速、 可扩展 JSON 编码器/解码器
  • 航空业走向发展黄金期,P2P线下金融实现线上大迁徙
  • Linux命令之top、ulimit、free
  • 如何画实体关系图
  • HashSet源码分析
  • TCP是如何保证包的顺序传输
  • .Net Remoting常用部署结构
  • 阿里巴巴王坚:数据的价值在于计算
  • mysql 删除单表内多个字段重复的数据
  • linux中分区挂载的解释
  • ubuntu下好用的音乐播放器audacious
  • pip install read time-out
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 77. Combinations
  • Brief introduction of how to 'Call, Apply and Bind'
  • docker容器内的网络抓包
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • javascript 总结(常用工具类的封装)
  • JS数组方法汇总
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • rc-form之最单纯情况
  • React-flux杂记
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • text-decoration与color属性
  • Vue 2.3、2.4 知识点小结
  • 闭包--闭包作用之保存(一)
  • 关于使用markdown的方法(引自CSDN教程)
  • 基于组件的设计工作流与界面抽象
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 微信小程序填坑清单
  • 用jquery写贪吃蛇
  • No resource identifier found for attribute,RxJava之zip操作符
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #include到底该写在哪
  • #中的引用型是什么意识_Java中四种引用有什么区别以及应用场景
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (42)STM32——LCD显示屏实验笔记
  • (vue)页面文件上传获取:action地址
  • (二)hibernate配置管理
  • (二)丶RabbitMQ的六大核心
  • (附源码)计算机毕业设计大学生兼职系统
  • (六)vue-router+UI组件库
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)菜鸟学数据库(三)——存储过程
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .gitignore文件---让git自动忽略指定文件