У меня очень простой переход между двумя действиями, и иногда изображение останавливается посередине, отстает, мигает черным цветом.
Я много раз использовал общие элементы-переходы с Glide, но на этот раз я не могу сделать так, чтобы он не отставал.
это первое действие:
val intent = Intent(this, MediaZoomImageActivity::class.java)
intent.putExtra(MediaZoomActivity.ZOOM_MEDIA_URL, submission.imageUrl)
val bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(this,
post_image_parallax, ViewCompat.getTransitionName(post_image_parallax)).toBundle()
startActivity(intent, bundle)
это второе действие:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_zoom_image)
postponeEnterTransition()
back.setOnClickListener { finish() }
val url = intent.getStringExtra(ZOOM_MEDIA_URL)
Glide.with(this)
.load(url)
.apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.RESOURCE))
.into(media_zoom_image)
media_zoom_image.viewTreeObserver.addOnPreDrawListener(object : ViewTreeObserver.OnPreDrawListener {
override fun onPreDraw(): Boolean {
media_zoom_image.viewTreeObserver.removeOnPreDrawListener(this)
startPostponedEnterTransition()
return true
}
})
это макет для второго действия:
- ограничениеМакет
- -кнопка возврата (кнопка изображения)
- -изображение (ImageView)
это анимация:
<changeBounds
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200" />
Это очень просто, но я не могу уложить это в голове. На втором изображении изначально был какой-то слушатель, использующий жесты, и я подумал, что причина в этом, но, комментируя все, все равно происходит это отставание. Изображение в первом действии является целью другого общего элемента-перехода с тем же именем перехода, может быть проблема в этом? Я делаю что-то неправильно? Это проблема с ConstraintLayout? Есть ли проблема с Glide?
Заранее спасибо за помощь.