Android動畫之逐幀動畫(FrameAnimation)詳解

今天我們就來學習逐幀動畫,廢話少說直接上效果圖如下:

?

?

幀動畫的實現方式有兩種:

一、在res/drawable文件夾下新建animation-list的XML實現幀動畫

1、首先在res/drawable文件夾下添加img00-img24共25張圖片

2、新建frame_anim.xml

?

[html]?view plain?copy
  1. <?xml?version="1.0"?encoding="utf-8"?>??
  2. <animation-list?xmlns:android="http://schemas.android.com/apk/res/android"??
  3. ????android:oneshot="true"?>??
  4. ??
  5. ????<!--?animation-list?幀動畫?-->??
  6. ????<!--?android:oneshot的值為?false代表播放多次,true代表只播放一次?-->??
  7. ????<!--?duration代表每張圖片的播放時間?,定義一個持續時間為50毫秒的動畫幀?-->??
  8. ????<item??
  9. ????????android:drawable="@drawable/img00"??
  10. ????????android:duration="50"/>??
  11. ????<item??
  12. ????????android:drawable="@drawable/img01"??
  13. ????????android:duration="50"/>??
  14. ????<item??
  15. ????????android:drawable="@drawable/img02"??
  16. ????????android:duration="50"/>??
  17. ????<item??
  18. ????????android:drawable="@drawable/img03"??
  19. ????????android:duration="50"/>??
  20. ????<item??
  21. ????????android:drawable="@drawable/img04"??
  22. ????????android:duration="50"/>??
  23. ????<item??
  24. ????????android:drawable="@drawable/img05"??
  25. ????????android:duration="50"/>??
  26. ????<item??
  27. ????????android:drawable="@drawable/img06"??
  28. ????????android:duration="50"/>??
  29. ????<item??
  30. ????????android:drawable="@drawable/img07"??
  31. ????????android:duration="50"/>??
  32. ????<item??
  33. ????????android:drawable="@drawable/img08"??
  34. ????????android:duration="50"/>??
  35. ????<item??
  36. ????????android:drawable="@drawable/img09"??
  37. ????????android:duration="50"/>??
  38. ????<item??
  39. ????????android:drawable="@drawable/img10"??
  40. ????????android:duration="50"/>??
  41. ????<item??
  42. ????????android:drawable="@drawable/img11"??
  43. ????????android:duration="50"/>??
  44. ????<item??
  45. ????????android:drawable="@drawable/img12"??
  46. ????????android:duration="50"/>??
  47. ????<item??
  48. ????????android:drawable="@drawable/img13"??
  49. ????????android:duration="50"/>??
  50. ????<item??
  51. ????????android:drawable="@drawable/img14"??
  52. ????????android:duration="50"/>??
  53. ????<item??
  54. ????????android:drawable="@drawable/img15"??
  55. ????????android:duration="50"/>??
  56. ????<item??
  57. ????????android:drawable="@drawable/img16"??
  58. ????????android:duration="50"/>??
  59. ????<item??
  60. ????????android:drawable="@drawable/img17"??
  61. ????????android:duration="50"/>??
  62. ????<item??
  63. ????????android:drawable="@drawable/img18"??
  64. ????????android:duration="50"/>??
  65. ????<item??
  66. ????????android:drawable="@drawable/img19"??
  67. ????????android:duration="50"/>??
  68. ????<item??
  69. ????????android:drawable="@drawable/img20"??
  70. ????????android:duration="50"/>??
  71. ????<item??
  72. ????????android:drawable="@drawable/img21"??
  73. ????????android:duration="50"/>??
  74. ????<item??
  75. ????????android:drawable="@drawable/img22"??
  76. ????????android:duration="50"/>??
  77. ????<item??
  78. ????????android:drawable="@drawable/img23"??
  79. ????????android:duration="50"/>??
  80. ????<item??
  81. ????????android:drawable="@drawable/img24"??
  82. ????????android:duration="50"/>??
  83. ??
  84. </animation-list>??


3、在activity_main中添加控件

?

?

[html]?view plain?copy
  1. <RelativeLayout?xmlns:android="http://schemas.android.com/apk/res/android"??
  2. ????xmlns:tools="http://schemas.android.com/tools"??
  3. ????android:layout_width="match_parent"??
  4. ????android:layout_height="match_parent"??
  5. ????tools:context="com.havorld.frameanimation.MainActivity"?>??
  6. ??
  7. ????<ImageView??
  8. ????????android:id="@+id/imageView"??
  9. ????????android:layout_width="wrap_content"??
  10. ????????android:layout_height="wrap_content"??
  11. ????????android:layout_centerInParent="true"?/>??
  12. ????<!--?android:background="@drawable/frame_anim"?-->??
  13. ??
  14. ????<LinearLayout??
  15. ????????android:layout_width="match_parent"??
  16. ????????android:layout_height="wrap_content"??
  17. ????????android:layout_alignParentBottom="true"??
  18. ????????android:orientation="horizontal"??
  19. ????????android:padding="10dp"?>??
  20. ??
  21. ????????<Button??
  22. ????????????android:id="@+id/start"??
  23. ????????????android:layout_width="0dp"??
  24. ????????????android:layout_height="wrap_content"??
  25. ????????????android:layout_weight="1"??
  26. ????????????android:text="播放"?/>??
  27. ??
  28. ????????<Button??
  29. ????????????android:id="@+id/stop"??
  30. ????????????android:layout_width="0dp"??
  31. ????????????android:layout_height="wrap_content"??
  32. ????????????android:layout_weight="1"??
  33. ????????????android:text="停止"?/>??
  34. ????</LinearLayout>??
  35. ??
  36. </RelativeLayout>??


4、在代碼中獲取并開啟幀動畫

?

?

[java]?view plain?copy
  1. public?class?MainActivity?extends?Activity?implements?OnClickListener?{??
  2. ??
  3. ????private?ImageView?imageView;??
  4. ????private?AnimationDrawable?animationDrawable;??
  5. ??
  6. ????@Override??
  7. ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  8. ????????super.onCreate(savedInstanceState);??
  9. ????????setContentView(R.layout.activity_main);??
  10. ??
  11. ????????imageView?=?(ImageView)?findViewById(R.id.imageView);??
  12. ????????findViewById(R.id.start).setOnClickListener(this);??
  13. ????????findViewById(R.id.stop).setOnClickListener(this);??
  14. ??
  15. ????????setXml2FrameAnim1();??
  16. ????????//?setXml2FrameAnim2();??
  17. ??
  18. ????}??
  19. ??
  20. ????/**?
  21. ?????*?通過XML添加幀動畫方法一?
  22. ?????*/??
  23. ????private?void?setXml2FrameAnim1()?{??
  24. ??
  25. ????????//?把動畫資源設置為imageView的背景,也可直接在XML里面設置??
  26. ????????imageView.setBackgroundResource(R.drawable.frame_anim);??
  27. ????????animationDrawable?=?(AnimationDrawable)?imageView.getBackground();??
  28. ????}??
  29. ??
  30. ????/**?
  31. ?????*?通過XML添加幀動畫方法二?
  32. ?????*/??
  33. ????private?void?setXml2FrameAnim2()?{??
  34. ??
  35. ????????//?通過逐幀動畫的資源文件獲得AnimationDrawable示例??
  36. ????????animationDrawable?=?(AnimationDrawable)?getResources().getDrawable(??
  37. ????????????????R.drawable.frame_anim);??
  38. ????????imageView.setBackground(animationDrawable);??
  39. ????}??
  40. ???
  41. ????@Override??
  42. ????public?void?onClick(View?v)?{??
  43. ??
  44. ????????switch?(v.getId())?{??
  45. ????????case?R.id.start:??
  46. ????????????if?(animationDrawable?!=?null?&&?!animationDrawable.isRunning())?{??
  47. ????????????????animationDrawable.start();??
  48. ????????????}??
  49. ????????????break;??
  50. ????????case?R.id.stop:??
  51. ????????????if?(animationDrawable?!=?null?&&?animationDrawable.isRunning())?{??
  52. ????????????????animationDrawable.stop();??
  53. ????????????}??
  54. ????????????break;??
  55. ??
  56. ????????default:??
  57. ????????????break;??
  58. ????????}??
  59. ????}??
  60. ??
  61. }??


二、通過代碼實現幀動畫

?

?

[java]?view plain?copy
  1. /**?
  2. ?*?通過代碼添加幀動畫方法?
  3. ?*/??
  4. private?void?setSrc2FrameAnim()?{??
  5. ??
  6. ????animationDrawable?=?new?AnimationDrawable();??
  7. ????//?為AnimationDrawable添加動畫幀??
  8. ????animationDrawable.addFrame(??
  9. ????????????getResources().getDrawable(R.drawable.img00),?50);??
  10. ????animationDrawable.addFrame(??
  11. ????????????getResources().getDrawable(R.drawable.img01),?50);??
  12. ????animationDrawable.addFrame(??
  13. ????????????getResources().getDrawable(R.drawable.img02),?50);??
  14. ????animationDrawable.addFrame(??
  15. ????????????getResources().getDrawable(R.drawable.img03),?50);??
  16. ????animationDrawable.addFrame(??
  17. ????????????getResources().getDrawable(R.drawable.img04),?50);??
  18. ????animationDrawable.addFrame(??
  19. ????????????getResources().getDrawable(R.drawable.img05),?50);??
  20. ????animationDrawable.addFrame(??
  21. ????????????getResources().getDrawable(R.drawable.img06),?50);??
  22. ????animationDrawable.addFrame(??
  23. ????????????getResources().getDrawable(R.drawable.img07),?50);??
  24. ????animationDrawable.addFrame(??
  25. ????????????getResources().getDrawable(R.drawable.img08),?50);??
  26. ????animationDrawable.addFrame(??
  27. ????????????getResources().getDrawable(R.drawable.img09),?50);??
  28. ????animationDrawable.addFrame(??
  29. ????????????getResources().getDrawable(R.drawable.img10),?50);??
  30. ????animationDrawable.addFrame(??
  31. ????????????getResources().getDrawable(R.drawable.img11),?50);??
  32. ????animationDrawable.addFrame(??
  33. ????????????getResources().getDrawable(R.drawable.img12),?50);??
  34. ????animationDrawable.addFrame(??
  35. ????????????getResources().getDrawable(R.drawable.img13),?50);??
  36. ????animationDrawable.addFrame(??
  37. ????????????getResources().getDrawable(R.drawable.img14),?50);??
  38. ????animationDrawable.addFrame(??
  39. ????????????getResources().getDrawable(R.drawable.img15),?50);??
  40. ????animationDrawable.addFrame(??
  41. ????????????getResources().getDrawable(R.drawable.img16),?50);??
  42. ????animationDrawable.addFrame(??
  43. ????????????getResources().getDrawable(R.drawable.img17),?50);??
  44. ????animationDrawable.addFrame(??
  45. ????????????getResources().getDrawable(R.drawable.img18),?50);??
  46. ????animationDrawable.addFrame(??
  47. ????????????getResources().getDrawable(R.drawable.img19),?50);??
  48. ????animationDrawable.addFrame(??
  49. ????????????getResources().getDrawable(R.drawable.img20),?50);??
  50. ????animationDrawable.addFrame(??
  51. ????????????getResources().getDrawable(R.drawable.img21),?50);??
  52. ????animationDrawable.addFrame(??
  53. ????????????getResources().getDrawable(R.drawable.img22),?50);??
  54. ????animationDrawable.addFrame(??
  55. ????????????getResources().getDrawable(R.drawable.img23),?50);??
  56. ????animationDrawable.addFrame(??
  57. ????????????getResources().getDrawable(R.drawable.img24),?50);??
  58. ????//?設置為循環播放??
  59. ????animationDrawable.setOneShot(false);??
  60. ????imageView.setBackground(animationDrawable);??
  61. }??

?

點擊下載源碼

?

轉載于:https://www.cnblogs.com/Im-Victor/p/8760379.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/452101.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/452101.shtml
英文地址,請注明出處:http://en.pswp.cn/news/452101.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ajax-簡單參數方法實現陰影效果

注&#xff1a; 簡單參數 &#xff08;按照參數的數量和位置傳遞參數&#xff09; 使用時按照位置、數量傳遞 shadow.js函數//簡單參數實現方式/** slices:陰影* opacity:透明度* zIndex:層級* */jQuery.fn.shadow_simple function (slices,opacity,zIndex) { //獲取到每個…

第一二三范式的簡單理解

第一范式&#xff08;無重復的列&#xff09; 定義&#xff1a;數據庫表的每一列都是不可分割的原子數據項&#xff0c;而不能是集合&#xff0c;數組&#xff0c;記錄等非原子數據項。如果實體中的某個屬性有多個值時&#xff0c;必須拆分為不同的屬性 通俗解釋&#xff1a;一…

網絡爬蟲--1.通用爬蟲和聚焦爬蟲

文章目錄一.前言二.通用爬蟲1.工作原理2.通用爬蟲的局限性三.聚焦爬蟲一.前言 根據使用場景&#xff0c;網絡爬蟲可分為 通用爬蟲 和 聚焦爬蟲 兩種。 其中通用網絡爬蟲是捜索引擎抓取系統&#xff08;Baidu、Google、Yahoo等&#xff09;的重要組成部分。主要目的是將互聯網…

敏捷教練的工具箱

學習并不是簡簡單單的閱讀和瀏覽&#xff0c;而是一個積累的過程&#xff0c;一個通過持續的學習&#xff0c;對自己的知識體系不斷豐富、索引的過程。接下來我會從四個方面入手分享我的經驗。 高質量的信息源和高效的學習 Google是一個很好的工具&#xff0c;通過它&#x…

log4j教程

詳細的Log4j使用教程 轉載 2016年08月19日 14:44:49 5072 日志是應用軟件中不可缺少的部分&#xff0c;Apache的開源項目log4j是一個功能強大的日志組件,提供方便的日志記錄。在apache網站&#xff1a;jakarta.apache.org/log4j 可以免費下載到Log4j最新版本的軟件包。…

BC范式介紹

設關系模式R<U&#xff0c;F>∈1NF&#xff0c;如果對于R的每個函數依賴X→Y&#xff0c;若Y不屬于X&#xff0c;則X必含有候選碼&#xff0c;那么R∈BCNF。 即為&#xff1a;對于關系模式R&#xff0c;若 R為第一范式&#xff0c;且每個屬性都不部分依賴于候選鍵也不傳遞…

com.jhlabs:imaging:jar:01012005 所在倉庫+captcha驗證碼maven依賴

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 <repositories> <repository> <id>atlassian</id> <name>atlassian</name&g…

python 發送郵件的兩種方式【終極篇】

python 發送郵件的兩種方式【終極篇】 一&#xff0c;利用python自帶的庫 smtplib簡單高效 from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.header import Header import smtplib from django.conf import settingsmail_hos…

網絡爬蟲--2.HTTP和HTTPS

文章目錄一.簡介二.HTTP的請求與響應三.客戶端HTTP請求1.格式2.請求方法四.常用的請求報頭1.Host (主機和端口號)2.Connection (鏈接類型)3.Upgrade-Insecure-Requests (升級為HTTPS請求)4. User-Agent (瀏覽器名稱)5. Accept (傳輸文件類型)6.Referer (頁面跳轉處)7.Accept-En…

解決win7的outlook打不開的問題

outlook打不開&#xff0c;一直顯示正在處理 解決方法&#xff1a; 1. 按住Ctrl,雙擊打開組件&#xff0c;會提示是否進入安全模式&#xff0c; 進入安全模式 2. 單擊Outlook中的文件-選項-加載項- 左下角的“COM加載項“ 旁邊的“轉到”&#xff0c;將所有加載項前面的勾都去掉…

IBM王陽:軟件是凝聚創新力的最佳平臺

導讀&#xff1a;在IBM全球副總裁兼IBM中國開發中心總經理王陽博士看來&#xff0c;IBM百年不衰的根本原因在于將創新力凝結成軟件然后進行合適的傳播&#xff0c;其間最重要的是成功打造出了一個吸引人才、培養研發人才并激發出人才創新力的環境和氛圍。而保持創新領導力的關鍵…

數據庫的規范化

在關系數據庫中&#xff0c;對關系模式的基本要求是滿足第一范式。 規范化程度過低的關系不一定能夠很好地描述現實世界 可能存在插入異常、刪除異常、修改復雜、數據冗余等問題 解決方法就是對其進行規范化&#xff0c;轉換成高級范式 一個低一級范式的關系模式&#xff0c;通…

Jquery 多行拖拽圖片排序 jq優化

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>jQuery圖片拖動排序代碼</title><style type"text/css">.item_container{position:relative;height:auto;overflow:hidden;} .item_content ul{li…

應該把script標簽放在哪里

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 概述&#xff1a; 如果在頁面中寫JS的話&#xff0c;那必然會用到script標簽&#xff0c;理論上script標簽放在哪里都是可以的&#xff…

網絡爬蟲--3.str和bytes的區別

文章目錄一.bytes二.str和bytes相互轉換三.bytearray一.bytes bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象&#xff0c;至于該對象到底表示什么&#xff08;比如到底是什么字符&#xff09;則由相應的編碼格式解碼所決定。 bytes是Python 3中特有的&#xff0c…

git使用問題

1、錯誤&#xff1a;The following untracked working tree files would be overwritten by checkout 。后面跟了幾個文件 場景&#xff1a;需要從一個分支切換到另一個分支時報錯 方法&#xff1a;git clean -d -fx "" 原因&#xff1a;之前修改了.gitignore文件&am…

jdbc寫入和讀取過程

[jdbc寫操作] Class.forName("com.mysql.jdbc.Driver"); Connection conn DriverManager.getConnection("jdbc:mysql://localhost:3306/big","root","root"); ppst conn.preparedStatement("insert into test(id,name,age) val…

分享11款主流的開源編程工具

導讀&#xff1a;有了開源編程工具&#xff0c;在基于開源許可證的情況下您可以輕松學習、修改、提高代碼的質量&#xff0c;本文收集了11款最主流的且有價值的開源編程工具。或許會給您帶來一絲驚喜。一起來看下吧。 NO.1 Rhomobile Rhodes Ruby或許是Github上第二大流行語言…

數據庫觸發器

觸發器是一種特殊類型的存儲過程&#xff0c;它在指定的表中的數據發生變化時自動生效。喚醒調用觸發器以響應 INSERT、UPDATE 或 DELETE 語句。觸發器可以查詢其它表&#xff0c;并可以包含復雜的Transact-SQL語句。將觸發器和觸發它的語句作為可在觸發器內回滾的單個事務對待…

jQuery中ready與load事件的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 jQuery中ready與load事件的區別 概述&#xff1a; 大家在工作中用jQuery的時候一定會在使用之前這樣&#xff1a;12345678//document rea…