parent
c0ad50b6e6
commit
a371edbe87
|
@ -16,6 +16,7 @@
|
||||||
package com.keylesspalace.tusky.components.compose.dialog
|
package com.keylesspalace.tusky.components.compose.dialog
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
import android.graphics.drawable.Animatable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
@ -45,6 +46,8 @@ class CaptionDialog : DialogFragment() {
|
||||||
|
|
||||||
private val binding by viewBinding(DialogImageDescriptionBinding::bind)
|
private val binding by viewBinding(DialogImageDescriptionBinding::bind)
|
||||||
|
|
||||||
|
private var animatable: Animatable? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setStyle(STYLE_NORMAL, R.style.TuskyDialogFragmentStyle)
|
setStyle(STYLE_NORMAL, R.style.TuskyDialogFragmentStyle)
|
||||||
|
@ -97,6 +100,23 @@ class CaptionDialog : DialogFragment() {
|
||||||
resource: Drawable,
|
resource: Drawable,
|
||||||
transition: Transition<in Drawable>?
|
transition: Transition<in Drawable>?
|
||||||
) {
|
) {
|
||||||
|
if (resource is Animatable) {
|
||||||
|
resource.callback = object : Drawable.Callback {
|
||||||
|
override fun invalidateDrawable(who: Drawable) {
|
||||||
|
view.invalidate()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun scheduleDrawable(who: Drawable, what: Runnable, `when`: Long) {
|
||||||
|
view.postDelayed(what, `when`)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun unscheduleDrawable(who: Drawable, what: Runnable) {
|
||||||
|
view.removeCallbacks(what)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource.start()
|
||||||
|
animatable = resource
|
||||||
|
}
|
||||||
imageView.setImageDrawable(resource)
|
imageView.setImageDrawable(resource)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,6 +148,12 @@ class CaptionDialog : DialogFragment() {
|
||||||
listener = context as? Listener ?: error("Activity is not ComposeCaptionDialog.Listener")
|
listener = context as? Listener ?: error("Activity is not ComposeCaptionDialog.Listener")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
animatable?.stop()
|
||||||
|
(animatable as? Drawable?)?.callback = null
|
||||||
|
}
|
||||||
|
|
||||||
interface Listener {
|
interface Listener {
|
||||||
fun onUpdateDescription(localId: Int, description: String)
|
fun onUpdateDescription(localId: Int, description: String)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue