私は2つのアクティビティ間で非常に単純な遷移を持ち、ときどきイメージが途中で停止し、遅れて黒色に点滅します。Glideを使用したシンプルな共有要素トランジションの遅れ
私は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
}
})
これは第二活性のレイアウトである:
- constraintLayout
- -backbutton(のImageButton)
- -image(ImageViewの)
これはアニメーションです:
<changeBounds
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="200" />
それは非常に簡単ですが、私は私の頭をラップすることはできませんその周りに。 2番目の画像には、もともとジェスチャーを使用するリスナーがいましたが、それが理由だと思っていましたが、すべてのコメントにはまだ遅れがあります。 最初のアクティビティのイメージは、同じtransitionNameを持つ別の共有要素トランジションの対象です。問題はありますか? 何か間違っていますか? ConstraintLayoutの問題ですか?グライドに問題はありますか?
ご協力いただきありがとうございます。
このソリューションでは、それほど頻繁にやることはないようですが、それでもまだあります。 –
タイミングの問題であるかどうかわかりませんが、一部の画像では問題があるように見えます。 また、これは初めて発生します。なぜなら、私が2回目に戻ってしまうと、スムーズです。キャッシングの問題になりますか? –
初めて画像を読み込むための時間です。それは動作するはずです、私は問題がアニメーション中にイメージビューを再描画しようとしていると思います。私は答えを更新するつもりです。あなたはそれを試すことができますか? –