@@ -36,6 +36,8 @@ open class SVGAImageView : ImageView {
3636
3737 var callback: SVGACallback ? = null
3838
39+ private var mVideoItem: SVGAVideoEntity ? = null
40+
3941 private var animator: ValueAnimator ? = null
4042
4143 private var mItemClickAreaListener : SVGAClickAreaListener ? = null
@@ -67,11 +69,21 @@ open class SVGAImageView : ImageView {
6769
6870 override fun onDetachedFromWindow () {
6971 super .onDetachedFromWindow()
72+ clearAudio()
7073 animator?.cancel()
7174 animator?.removeAllListeners()
7275 animator?.removeAllUpdateListeners()
7376 }
7477
78+ private fun clearAudio () {
79+ this .mVideoItem?.audios?.forEach { audio ->
80+ audio.playID?.let {
81+ this .mVideoItem?.soundPool?.stop(it)
82+ }
83+ audio.playID = null
84+ }
85+ }
86+
7587 private fun loadAttrs (attrs : AttributeSet ) {
7688 val typedArray = context.theme.obtainStyledAttributes(attrs, R .styleable.SVGAImageView , 0 , 0 )
7789 loops = typedArray.getInt(R .styleable.SVGAImageView_loopCount , 0 )
@@ -214,6 +226,7 @@ open class SVGAImageView : ImageView {
214226 val drawable = SVGADrawable (videoItem, dynamicItem ? : SVGADynamicEntity ())
215227 drawable.cleared = clearsAfterStop
216228 setImageDrawable(drawable)
229+ this .mVideoItem = videoItem
217230 }
218231
219232 fun stepToFrame (frame : Int , andPlay : Boolean ) {
0 commit comments