Добавление прослушивателя для обратного вызова общего элемента без изменения видимости представления
Я использую переход общего элемента между двумя действиями. Второе действие состоит из просмотра пейджера, содержащего фрагменты. Я хочу внести дальнейшие изменения, когда закончится переход общего элемента. Это обратный вызов:
setEnterSharedElementCallback(
object : SharedElementCallback() {
override fun onMapSharedElements(
names: MutableList<String>,
sharedElements: MutableMap<String, View>
) {
val keySharedElementView = sharedElements[videoPath[currentPosition]]
if (keySharedElementView != null) {
Log.i("KSEV", "Not Null")
ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
runOnUiThread { k
videoThumb.visibility = GONE
if (videoThumb.visibility == GONE) {
Log.i("SEV", "GONE")
}
}
}
}).start()
}
}
})
Распечатывается последняя запись журнала GONE. Но вид по-прежнему виден на экране. Как изменить его видимость?
1 ответ
Ваш код кажется хорошим, за исключением того, что вы еще не запустили анимацию, поэтому нет обратного вызова onAnimationEnd().
Измените код следующим образом:
ViewCompat.animate(keySharedElementView)
.setListener(object : ViewPropertyAnimatorListenerAdapter() {
override fun onAnimationEnd(view: View?) {
super.onAnimationEnd(view)
Log.i("KSEV","Ended")
}
}).setDuration(250).start()