美文网首页程序员Android知识
Animation's Brother ---- An

Animation's Brother ---- An

作者: UniGenius_Mx | 来源:发表于2016-03-01 20:09 被阅读110次

    动画进阶之 Animator


    上篇文章学习了Animation的原理,也许细心的人发现了,Animation只是在画布(Canvas)上不断的重绘,那么这样就会出现一个问题, 我们动画结束后,原来的view属性没有变化,假如一个button经过动画移动后, 再点击他,它所绑定的事件不会触发,必须点击原来的位置才会触发. 这就是Animator出现的原因. 别名:Property Animation(属性动画)

    简介

    既然是属性动画,那么需要什么?假如我们实现要知道什么?

    1. 分析问题

    • 要实现什么属性(这个应该没异议)
    • 动画要执行多长时间?
    • 比如要实现一个人跑一千米的动画, 那么开头肯定是加速跑,中间是匀速,后来越来越慢的效果,那么只有上面两个是不够的, 还需要一个东西不断改变跑步的速度
    • 假如这个人是围着操场跑的,现在他厉害了,要跑一万米,假设中间有8000米匀速的(任性!),那他围着操场一圈圈转的时候,难道你就把一个动画做成转几百圈的?No! 定义循环次数
      -现在这个人更厉害了, 他跑步的时候还会大跳!,那么问题来了,他是跑一步一大跳,还是跑一圈一大跳?同时多个属性变化之间的关系

    2. 解决问题

    恭喜你,看到这里你已经会用Animator了.不信你看(以上文跑步为例):

    • 你要有个"TA", 有了TA,你TA才能为所欲为啊! [View]
    • 你让他跑步,大跳,那他到底会干啥,他还能干什么?Android已经为"所有的他能做的动作"都考虑好了.像上帝一样,把这些都做放在了人的大脑里[ObjectAnimator],但是!他并不一定都做的到哦.,就像不是所有人都能把脚放到脖子上一样.
    • 持续时间 [Duration]
    • 越跑越快?越跑越慢?正跑三圈反跑一圈?[Time Interpolator]Android自带九种Interpolator.
      -你现在知道他是跑步了,所以你知道他是跑的快,跑的慢,单位m/s,如果他是跳远呢? 那就是跳的远,单位m,我如此绞尽脑汁的拟人化到此要结束了. 程序员最好还是站在计算机的角度考虑问题. 计算机不知道跑是用m/s,还是m的,所以要告诉他[TypeEvaluator]

    代码实现

      ObjectAnimator .ofInt("TA(View)","行为-跑(属性)","3000米(值Value[])") 
                     .setInterpolator("匀速跑(Interpolator)") 
                    .setEvaluator("单位m/s"(IntEvaluator)) 
                    .setDuration("跑多久"(Duration) .start();//start---->发令枪
    

    今天有点晚了,不让他大跳了. 下次考虑他大跳, 还要考虑他要是残疾怎么办?
    他要是缺胳膊少腿的怎么办,以及能不能给他装假肢的问题.

    以上言论仅代表我此时此刻此分此秒的观点

    欢迎大家对刚才的我进行拍砖,指正

    相关文章

      网友评论

        本文标题:Animation's Brother ---- An

        本文链接:https://www.haomeiwen.com/subject/bffnkttx.html