一、效果图

iShot2020-09-0321.58.10.gif

二、实现方法

2.1 xml 实现方式

  • xml 文件 ``` <?xml version=”1.0” encoding=”utf-8”?>

    <ImageView

    1. android:id="@+id/iv_anim_fragment_two"
    2. android:layout_width="230dp"
    3. android:layout_height="270dp"
    4. />

  1. - drawable 文件

<?xml version=”1.0” encoding=”utf-8”?>

  1. <item android:drawable="@mipmap/p0" android:duration="50"/>
  2. <item
  3. android:drawable="@mipmap/p1"
  4. android:duration="50" />
  5. <item
  6. android:drawable="@mipmap/p2"
  7. android:duration="50" />
  8. <item
  9. android:drawable="@mipmap/p3"
  10. android:duration="50" />
  11. <item
  12. android:drawable="@mipmap/p4"
  13. android:duration="50" />
  14. <item
  15. android:drawable="@mipmap/p5"
  16. android:duration="50" />
  17. <item
  18. android:drawable="@mipmap/p6"
  19. android:duration="50" />
  20. <item
  21. android:drawable="@mipmap/p7"
  22. android:duration="50" />
  23. <item
  24. android:drawable="@mipmap/p8"
  25. android:duration="50" />
  26. <item
  27. android:drawable="@mipmap/p9"
  28. android:duration="50" />
  29. <item
  30. android:drawable="@mipmap/p10"
  31. android:duration="50" />
  32. <item
  33. android:drawable="@mipmap/p11"
  34. android:duration="50" />
  35. <item
  36. android:drawable="@mipmap/p12"
  37. android:duration="50" />
  38. <item
  39. android:drawable="@mipmap/p13"
  40. android:duration="50" />
  41. <item
  42. android:drawable="@mipmap/p14"
  43. android:duration="50" />
  44. <item
  45. android:drawable="@mipmap/p15"
  46. android:duration="50" />
  47. <item
  48. android:drawable="@mipmap/p16"
  49. android:duration="50" />
  50. <item
  51. android:drawable="@mipmap/p17"
  52. android:duration="50" />
  53. <item
  54. android:drawable="@mipmap/p18"
  55. android:duration="50" />
  56. <item
  57. android:drawable="@mipmap/p19"
  58. android:duration="50" />
  59. <item
  60. android:drawable="@mipmap/p20"
  61. android:duration="50" />
  62. <item
  63. android:drawable="@mipmap/p21"
  64. android:duration="50" />
  65. <item
  66. android:drawable="@mipmap/p22"
  67. android:duration="50" />
  68. <item
  69. android:drawable="@mipmap/p23"
  70. android:duration="50" />
  71. <item
  72. android:drawable="@mipmap/p24"
  73. android:duration="50" />
  74. <item
  75. android:drawable="@mipmap/p25"
  76. android:duration="50" />
  77. <item
  78. android:drawable="@mipmap/p26"
  79. android:duration="50" />
  80. <item
  81. android:drawable="@mipmap/p27"
  82. android:duration="50" />
  83. <item
  84. android:drawable="@mipmap/p28"
  85. android:duration="50" />
  86. <item
  87. android:drawable="@mipmap/p29"
  88. android:duration="50" />
  89. <item
  90. android:drawable="@mipmap/p30"
  91. android:duration="50" />
  92. <item
  93. android:drawable="@mipmap/p31"
  94. android:duration="50" />
  95. <item
  96. android:drawable="@mipmap/p32"
  97. android:duration="50" />
  98. <item
  99. android:drawable="@mipmap/p33"
  100. android:duration="50" />
  101. <item
  102. android:drawable="@mipmap/p34"
  103. android:duration="50" />
  104. <item
  105. android:drawable="@mipmap/p35"
  106. android:duration="50" />
  107. <item
  108. android:drawable="@mipmap/p36"
  109. android:duration="50" />
  110. <item
  111. android:drawable="@mipmap/p37"
  112. android:duration="50" />
  113. <item
  114. android:drawable="@mipmap/p38"
  115. android:duration="50" />
  116. <item
  117. android:drawable="@mipmap/p39"
  118. android:duration="50" />
  119. <item
  120. android:drawable="@mipmap/p40"
  121. android:duration="50" />
  122. <item
  123. android:drawable="@mipmap/p41"
  124. android:duration="50" />
  125. <item
  126. android:drawable="@mipmap/p42"
  127. android:duration="50" />
  128. <item
  129. android:drawable="@mipmap/p43"
  130. android:duration="50" />
  131. <item
  132. android:drawable="@mipmap/p44"
  133. android:duration="50" />
  134. <item
  135. android:drawable="@mipmap/p45"
  136. android:duration="50" />
  137. <item
  138. android:drawable="@mipmap/p46"
  139. android:duration="50" />
  140. <item
  141. android:drawable="@mipmap/p47"
  142. android:duration="50" />
  143. <item
  144. android:drawable="@mipmap/p48"
  145. android:duration="50" />
  146. <item
  147. android:drawable="@mipmap/p49"
  148. android:duration="50" />
  149. <item
  150. android:drawable="@mipmap/p50"
  151. android:duration="50" />
  152. <item
  153. android:drawable="@mipmap/p51"
  154. android:duration="50" />
  155. <item
  156. android:drawable="@mipmap/p52"
  157. android:duration="50" />
  158. <item
  159. android:drawable="@mipmap/p53"
  160. android:duration="50" />
  161. <item
  162. android:drawable="@mipmap/p54"
  163. android:duration="50" />
  164. <item
  165. android:drawable="@mipmap/p55"
  166. android:duration="50" />
  167. <item
  168. android:drawable="@mipmap/p56"
  169. android:duration="50" />
  170. <item
  171. android:drawable="@mipmap/p57"
  172. android:duration="50" />
  173. <item
  174. android:drawable="@mipmap/p58"
  175. android:duration="50" />
  176. <item
  177. android:drawable="@mipmap/p59"
  178. android:duration="50" />

  1. - activity 中调用

//xml设置实现方式 iv_anim_fragment_one.setImageResource(R.drawable.anim_list) val drawable: AnimationDrawable = iv_anim_fragment_one.drawable as AnimationDrawable btn_anim_fragment_xmlStart.setOnClickListener { drawable.start() }

  1. btn_anim_fragment_xmlStop.setOnClickListener {
  2. drawable.stop()
  3. }
  1. <a name="uGKXX"></a>
  2. #### 2.2 java 代码实现

//代码实现方式 val animationDrawable = AnimationDrawable() for (i in 0..59){ val db = resources.getIdentifier(“p$i”,”mipmap”,packageName) val drawable2 = resources.getDrawable(db) animationDrawable.addFrame(drawable2,50) } animationDrawable.isOneShot = false iv_anim_fragment_two.setImageDrawable(animationDrawable)

  1. btn_anim_fragment_codeStart.setOnClickListener {
  2. animationDrawable.start()
  3. }
  4. btn_anim_fragment_codeStop.setOnClickListener {
  5. animationDrawable.stop()
  6. }
  1. <a name="kojK7"></a>
  2. #### 2.3 完整的 activity 代码

class AnimFragmentActivity: BaseActivity(R.layout.activity_anim_fragment) { override fun initData() {

  1. }
  2. override fun initEvent() {
  3. //xml设置实现方式
  4. iv_anim_fragment_one.setImageResource(R.drawable.anim_list)
  5. val drawable: AnimationDrawable = iv_anim_fragment_one.drawable as AnimationDrawable
  6. btn_anim_fragment_xmlStart.setOnClickListener {
  7. drawable.start()
  8. }
  9. btn_anim_fragment_xmlStop.setOnClickListener {
  10. drawable.stop()
  11. }
  12. //代码实现方式
  13. val animationDrawable = AnimationDrawable()
  14. for (i in 0..59){
  15. val db = resources.getIdentifier("p$i","mipmap",packageName)
  16. val drawable2 = resources.getDrawable(db)
  17. animationDrawable.addFrame(drawable2,50)
  18. }
  19. animationDrawable.isOneShot = false
  20. iv_anim_fragment_two.setImageDrawable(animationDrawable)
  21. btn_anim_fragment_codeStart.setOnClickListener {
  22. animationDrawable.start()
  23. }
  24. btn_anim_fragment_codeStop.setOnClickListener {
  25. animationDrawable.stop()
  26. }
  27. }
  28. override fun initInterface() {
  29. }
  30. override fun onReload() {
  31. }

} ```

三、地址和参考

demo
Android 逐帧动画:关于 逐帧动画 的使用都在这里了!