Skip to content
This repository was archived by the owner on Feb 6, 2023. It is now read-only.

Commit 35ec8ca

Browse files
committed
feat: Clear audio when remove svga image view.
1 parent 1534cd2 commit 35ec8ca

1 file changed

Lines changed: 13 additions & 0 deletions

File tree

library/src/main/java/com/opensource/svgaplayer/SVGAImageView.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)