逐帧动画(Frame Animation)
生活随笔
收集整理的這篇文章主要介紹了
逐帧动画(Frame Animation)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?? 逐幀動(dòng)畫也叫Drawable Animation,是最簡(jiǎn)單最直觀的動(dòng)畫類型,它利用人眼的視覺暫留效應(yīng)(也就是光對(duì)視網(wǎng)膜所產(chǎn)生的視覺),在光停止作用后,仍然會(huì)保留一段事件的現(xiàn)象。
? ? 在Android中實(shí)現(xiàn)逐幀動(dòng)畫,就是由設(shè)計(jì)師給出一系列狀態(tài)不斷變化的圖片,開發(fā)者可以指定動(dòng)畫中每一幀對(duì)應(yīng)的圖片和持續(xù)事件,然后就可以開始播放動(dòng)畫,具體有兩種方式可以定義逐幀動(dòng)畫,分別是采用XML資源文件和代碼實(shí)現(xiàn)。
1. XML資源文件方式
?? 這是最常用的方式,首先我們將每一幀的圖片放到res/drawable目錄中,然后在res/anim目錄中新建一個(gè)動(dòng)畫XML文件,在這個(gè)文件中使用<animation-list>標(biāo)簽來定義動(dòng)畫幀序列,使用<item>標(biāo)簽來定義動(dòng)畫的每一幀,并在其中指定幀的持續(xù)時(shí)間等屬性:
<?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.代碼方式
?? 在代碼中定義逐幀動(dòng)畫也很簡(jiǎn)單,但不常用:
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()總結(jié)
以上是生活随笔為你收集整理的逐帧动画(Frame Animation)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数字信号处理基础知识 - 模拟信号与数字
- 下一篇: Winamp网页播放器