kopia lustrzana https://github.com/ryukoposting/Signal-Android
Always notifyIfReady for each boolean change.
rodzic
98194c854a
commit
a06528e5e1
|
@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord
|
||||||
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader
|
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader
|
||||||
import org.thoughtcrime.securesms.mms.GlideApp
|
import org.thoughtcrime.securesms.mms.GlideApp
|
||||||
import org.thoughtcrime.securesms.stories.StoryTextPostModel
|
import org.thoughtcrime.securesms.stories.StoryTextPostModel
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
context: Context,
|
context: Context,
|
||||||
|
@ -40,10 +41,10 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
private val targetView: ImageView = findViewById(R.id.target_image)
|
private val targetView: ImageView = findViewById(R.id.target_image)
|
||||||
private val targetBlurView: ImageView = findViewById(R.id.target_image_blur)
|
private val targetBlurView: ImageView = findViewById(R.id.target_image_blur)
|
||||||
|
|
||||||
private var isSourceReady: Boolean = false
|
private var isSourceReady: Boolean by NotifyIfReadyDelegate(false)
|
||||||
private var isSourceBlurReady: Boolean = false
|
private var isSourceBlurReady: Boolean by NotifyIfReadyDelegate(false)
|
||||||
private var isTargetReady: Boolean = false
|
private var isTargetReady: Boolean by NotifyIfReadyDelegate(false)
|
||||||
private var isTargetBlurReady: Boolean = false
|
private var isTargetBlurReady: Boolean by NotifyIfReadyDelegate(false)
|
||||||
|
|
||||||
private var latestSource: Any? = null
|
private var latestSource: Any? = null
|
||||||
private var latestTarget: Any? = null
|
private var latestTarget: Any? = null
|
||||||
|
@ -62,7 +63,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isSourceReady = true
|
isSourceReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.placeholder(storyTextPostModel.getPlaceholder())
|
.placeholder(storyTextPostModel.getPlaceholder())
|
||||||
|
@ -86,7 +86,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isSourceReady = true
|
isSourceReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.dontAnimate()
|
.dontAnimate()
|
||||||
|
@ -102,7 +101,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isSourceBlurReady = true
|
isSourceBlurReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.dontAnimate()
|
.dontAnimate()
|
||||||
|
@ -135,7 +133,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isTargetReady = true
|
isTargetReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.dontAnimate()
|
.dontAnimate()
|
||||||
|
@ -159,7 +156,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isTargetReady = true
|
isTargetReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.dontAnimate()
|
.dontAnimate()
|
||||||
|
@ -175,7 +171,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
.addListener(
|
.addListener(
|
||||||
OnReadyListener {
|
OnReadyListener {
|
||||||
isTargetBlurReady = true
|
isTargetBlurReady = true
|
||||||
notifyIfReady()
|
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.dontAnimate()
|
.dontAnimate()
|
||||||
|
@ -241,6 +236,17 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
|
||||||
callback?.onAnimationFinished()
|
callback?.onAnimationFinished()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private inner class NotifyIfReadyDelegate(var value: Boolean) {
|
||||||
|
operator fun getValue(storiesSharedElementCrossFaderView: StoriesSharedElementCrossFaderView, property: KProperty<*>): Boolean {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun setValue(storiesSharedElementCrossFaderView: StoriesSharedElementCrossFaderView, property: KProperty<*>, b: Boolean) {
|
||||||
|
value = b
|
||||||
|
notifyIfReady()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
interface Callback {
|
interface Callback {
|
||||||
fun onReadyToAnimate()
|
fun onReadyToAnimate()
|
||||||
fun onAnimationStarted()
|
fun onAnimationStarted()
|
||||||
|
|
Ładowanie…
Reference in New Issue