博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
坑!为什么View.startAnimation不起作用?
阅读量:6509 次
发布时间:2019-06-24

本文共 876 字,大约阅读时间需要 2 分钟。

最近想做一个自定义的动画效果,第一个想到的方式是继承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,什么什么的……

转载地址:http://dkdfo.baihongyu.com/

你可能感兴趣的文章
PHP获取Cookie模拟登录CURL(转)
查看>>
PHP-权限控制类(转)
查看>>
CSS3秘笈第三版涵盖HTML5学习笔记9~12章
查看>>
bzoj1044木棍分割
查看>>
leetcode-136-Single Number
查看>>
微信小程序笔记<五> 页面管理及生命周期(route)——getCurrentPages()
查看>>
http服务器小项目
查看>>
一些数学上的名词及操作
查看>>
<%@ include %>指令和<jsp:include>区别
查看>>
因为文件组 'PRIMARY' 已满 解决办法
查看>>
Flume 读取实时更新的日志文件
查看>>
HDU 2049
查看>>
《Spring1之第十次站立会议》
查看>>
Unity Shader 噪声消融特效 - 剑灵死亡特效
查看>>
Eclipse 自动生成 Ant的Build.xml 配置文件
查看>>
添加一条信息到列表,如果重复就替换,
查看>>
C#基础第五天
查看>>
python 小数相加报错 invalid literal for int() with base 10
查看>>
【ubuntu】linux链接库
查看>>
uva 12325 枚举暴力 b
查看>>