diff --git a/app/src/main/java/pokercc/android/boxshadowlayout/demo/AnimationActivity.kt b/app/src/main/java/pokercc/android/boxshadowlayout/demo/AnimationActivity.kt index 8abb792..c91d7d7 100644 --- a/app/src/main/java/pokercc/android/boxshadowlayout/demo/AnimationActivity.kt +++ b/app/src/main/java/pokercc/android/boxshadowlayout/demo/AnimationActivity.kt @@ -68,7 +68,7 @@ class AnimationActivity : AppCompatActivity() { Dp(0f).toPx().toFloat(), Dp(20f).toPx().toFloat() ) - anim?.cancel() + cancelAnim() val animatorSet = AnimatorSet() anim = animatorSet animatorSet.duration = 2000 @@ -89,12 +89,20 @@ class AnimationActivity : AppCompatActivity() { super.onStart() anim?.resume() } + override fun onPause() { super.onPause() anim?.pause() } + override fun onDestroy() { super.onDestroy() + cancelAnim() + } + + private fun cancelAnim() { + anim?.removeAllListeners() anim?.cancel() + anim = null } } \ No newline at end of file diff --git a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BitmapShadowDrawable.kt b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BitmapShadowDrawable.kt index d4caa35..130318f 100644 --- a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BitmapShadowDrawable.kt +++ b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BitmapShadowDrawable.kt @@ -71,5 +71,9 @@ internal abstract class BitmapShadowDrawable(shadowPath: Path) : ShadowDrawable( abstract fun onDrawBitmap(bitmap: Bitmap) + override fun release() { + bitmap?.recycle() + bitmap = null + } } \ No newline at end of file diff --git a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BoxShadowLayout.kt b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BoxShadowLayout.kt index 4641e19..6679233 100644 --- a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BoxShadowLayout.kt +++ b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/BoxShadowLayout.kt @@ -104,6 +104,11 @@ class BoxShadowLayout @JvmOverloads constructor( tellParentNotChip() } + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + shadowDrawable.release() + } + override fun draw(canvas: Canvas) { drawShadow(canvas) val saveCount = canvas.saveLayer(null, null) diff --git a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/ShadowDrawable.kt b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/ShadowDrawable.kt index fe2b4c5..80f554b 100644 --- a/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/ShadowDrawable.kt +++ b/boxShadowLayout/src/main/java/pokercc/android/boxshadowlayout/ShadowDrawable.kt @@ -42,5 +42,5 @@ internal abstract class ShadowDrawable(protected val shadowPath: Path) : Drawabl open fun invalidateCache() = Unit abstract fun onShadowChange(blur: Float, color: Int, inset: Boolean) - + open fun release() = Unit } \ No newline at end of file