专栏名称: 程序员大咖
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
目录
相关文章推荐
程序猿  ·  有了这些 VS Code 的 ... ·  昨天  
伯乐在线  ·  499 美元的"爱国税"?特朗普 T1 ... ·  18 小时前  
伯乐在线  ·  499 美元的"爱国税"?特朗普 T1 ... ·  18 小时前  
玉伯  ·  感谢使用 ... ·  昨天  
蚂蚁技术AntTech  ·  揭秘MCP生态中的「暗面」:Agent如何成 ... ·  2 天前  
51好读  ›  专栏  ›  程序员大咖

Android帧动画和补间动画看这篇足够了

程序员大咖  · 公众号  · 程序员  · 2018-03-28 10:24

正文

请到「今天看啥」查看全文



android:drawable = "@drawable/sp3"
android:duration = "200" />
< item
android:drawable = "@drawable/sp4"
android:duration = "200" />
< item
android:drawable = "@drawable/sp5"
android:duration = "200" />
< item
android:drawable = "@drawable/sp6"
android:duration = "200" />
< item
android:drawable = "@drawable/sp7"
android:duration = "200" />
< item
android:drawable = "@drawable/sp8"
android:duration = "200" />
< item
android:drawable = "@drawable/sp9"
android:duration = "200" />
animation-list >

需要注意的是,根节点必须为 oneshot 属性代表是否只播放一次,true 为一次,false 为循环播放。 duration 属性表示此张图片滞留的时间,然后注意从上到下依次引用图片即可。

接着给一个 ImageView 设置这个动画:

    <ImageView
       android:id="@+id/iv_frame"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/bear_anim"
       android:layout_centerInParent="true" />

最后一步当然是让动画跑起来了,需要用到 AnimationDrawable 对象:

    AnimationDrawable animationDrawable = (AnimationDrawable) ivFrame.getBackground();
   animationDrawable.start();

这样一个帧动画就展现在我们面前了,想让它停下来也很简单:

    if(animationDrawable.isRunning()){
           animationDrawable.stop();
   }

在此补充下,bear_anim 同样可以设置给 src 属性,然后调用 getDrawble().start() 来播放动画,不过不推荐,具体原因自行查找下 src background 属性的区别。
自然我们也可以用纯代码的方式实现,不过在此真的不推荐,显然 xml 的方式更省力,并且维护起来更方便。

补间动画

tween 动画也叫作补间动画,它可以在一定的时间内使 View 完成四种基本的动画,即 平移、缩放、透明度、旋转 ,也可以将它们组合到一起播放出来。这里先提一下未来会研究的 属性动画 ,值得注意的是, 无论是 帧动画 还是 补间动画 ,都是把动画效果作用到 View 上,如果一个不是 View 的元素想实现动画,那这两种就无能为力了,只能请 属性动画 帮忙了。


并且补间动画仅仅是给 View 增加了动画的“假象”,比如一个按钮从左侧跑到了右侧,你在右侧是无法点击它的,但是这不代表 补间动画就没有用武之地了,当你需要的动画效果无外乎上面那四种动画,并且仅仅是展示的时候,补间动画就再合适不过了。

同样,补间动画的实现依然可以有两种方式,xml 定义或者是纯代码的方式,这里依然是建议使用 xml 的方式。


AlphaAnimation 透明度

在 res 文件夹下新建文件夹 anim ,新建文件 alpha_anim:

<alpha






请到「今天看啥」查看全文