逐帧动画(Frame Animation)
生活随笔
收集整理的這篇文章主要介紹了
逐帧动画(Frame Animation)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?? 逐幀動畫也叫Drawable Animation,是最簡單最直觀的動畫類型,它利用人眼的視覺暫留效應(也就是光對視網膜所產生的視覺),在光停止作用后,仍然會保留一段事件的現象。
? ? 在Android中實現逐幀動畫,就是由設計師給出一系列狀態不斷變化的圖片,開發者可以指定動畫中每一幀對應的圖片和持續事件,然后就可以開始播放動畫,具體有兩種方式可以定義逐幀動畫,分別是采用XML資源文件和代碼實現。
1. XML資源文件方式
?? 這是最常用的方式,首先我們將每一幀的圖片放到res/drawable目錄中,然后在res/anim目錄中新建一個動畫XML文件,在這個文件中使用<animation-list>標簽來定義動畫幀序列,使用<item>標簽來定義動畫的每一幀,并在其中指定幀的持續時間等屬性:
<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/shuibo0000" android:duration="120"/><item android:drawable="@drawable/shuibo0001" android:duration="120"/><item android:drawable="@drawable/shuibo0002" android:duration="120"/><item android:drawable="@drawable/shuibo0003" android:duration="120"/><item android:drawable="@drawable/shuibo0004" android:duration="120"/><item android:drawable="@drawable/shuibo0005" android:duration="120"/><item android:drawable="@drawable/shuibo0006" android:duration="120"/><item android:drawable="@drawable/shuibo0007" android:duration="120"/><item android:drawable="@drawable/shuibo0008" android:duration="120"/><item android:drawable="@drawable/shuibo0009" android:duration="120"/><item android:drawable="@drawable/shuibo0010" android:duration="120"/><item android:drawable="@drawable/shuibo0011" android:duration="120"/><item android:drawable="@drawable/shuibo0012" android:duration="120"/><item android:drawable="@drawable/shuibo0013" android:duration="120"/><item android:drawable="@drawable/shuibo0014" android:duration="120"/><item android:drawable="@drawable/shuibo0015" android:duration="120"/><item android:drawable="@drawable/shuibo0016" android:duration="120"/><item android:drawable="@drawable/shuibo0017" android:duration="120"/><item android:drawable="@drawable/shuibo0018" android:duration="120"/><item android:drawable="@drawable/shuibo0019" android:duration="120"/><item android:drawable="@drawable/shuibo0020" android:duration="120"/><item android:drawable="@drawable/shuibo0021" android:duration="120"/><item android:drawable="@drawable/shuibo0022" android:duration="120"/><item android:drawable="@drawable/shuibo0023" android:duration="120"/> </animation-list><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"app:srcCompat="@drawable/shuibowen_animtaion" /> val animationDrawable = imageView.drawable as AnimationDrawableif(!animationDrawable.isRunning){animationDrawable.start()}2.代碼方式
?? 在代碼中定義逐幀動畫也很簡單,但不常用:
val animationDrawable = AnimationDrawable()for (i in 0 until 24) {val identifier = resources.getIdentifier(if (i - 10 < 0) {"shuibo000$i"} else "shuibo00$i", "drawable", packageName)val drawable = resources.getDrawable(identifier)animationDrawable.addFrame(drawable, 120)}imageView.setImageDrawable(animationDrawable)animationDrawable.isOneShot = falseanimationDrawable.start()總結
以上是生活随笔為你收集整理的逐帧动画(Frame Animation)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字信号处理基础知识 - 模拟信号与数字
- 下一篇: CSS或JS实现逐帧动画方案