我正在使用共享元素过渡和recyclerview,你可以在这个gif中看到:
有一个延迟开始共享元素转换,它不是关于动画的速度,而是像一个加载延迟的开始。如果你注意到,在整个背景消失并只剩下图像的时刻,那就是我想要消除的那一刻,也就是我所说的那个延迟。我该如何消除它并使整个过程更加平滑?现在真的很丑,这是我第一次使用这个动画,如果你有建议,我会非常感激。
这是我的适配器内处理共享元素过渡的代码:
holder.image.setTransitionName("example_transition");
Intent intent = new Intent(context, ShowElementActivity.class);
intent.putExtra("Element", elemento);
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
(AnimeActivity)context, holder.image, ViewCompat.getTransitionName(holder.image));
context.startActivity(intent, options.toBundle());
这是处理目标内部的代码:
postponeEnterTransition();
Glide.with(this)
.load(elemento.image_url)
.listener(new RequestListener<Drawable>() {
@Override
public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
supportStartPostponedEnterTransition();
return false;
}
@Override
public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
startPostponedEnterTransition();
return false;
}
})
.into(showelement_image);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().getSharedElementEnterTransition().setDuration(200);
getWindow().getSharedElementReturnTransition().setDuration(200)
.setInterpolator(new DecelerateInterpolator());
}
Fade fade = new Fade();
fade.excludeTarget(android.R.id.statusBarBackground, true);
fade.excludeTarget(android.R.id.navigationBarBackground, true);
getWindow().setEnterTransition(fade);
getWindow().setExitTransition(fade);
activity.getSupportFragmentManager().beginTransaction().replace(R.id.yourIdd, fragment).commit()
。 - utrucceh