Добавление прослушивателя для обратного вызова общего элемента без изменения видимости представления

Я использую переход общего элемента между двумя действиями. Второе действие состоит из просмотра пейджера, содержащего фрагменты. Я хочу внести дальнейшие изменения, когда закончится переход общего элемента. Это обратный вызов:

      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()