java - android shared element transition start transition有延迟

标签 java android android-activity android-recyclerview shared-element-transition

我将共享元素转换与 recyclerview 一起使用,如您在此 gif 中所见:

enter image description here

开始共享元素转换有一个延迟,这与动画的速度无关,它就像开始时的加载延迟,如果你注意到,有一个瞬间整个背景消失,只有图像保留在那里,那moment是我要去掉的,也就是我说的延迟。我怎样才能删除它并使整个事情更顺利?现在真的很难看,这是我第一次做这个动画,所以如果你有什么建议,我将不胜感激。

这是在我的适配器中处理共享元素转换的代码:

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

最佳答案

此延迟是 new Activity 的成本,而不是 Transition 的成本,如果您不使用 Animation,您将看到相同的性能。所以使用Fragment而不是Activity

由于新的 Activity 性能,我正在通过 Single ActivityMultiple Fragments 开发应用程序以获得最佳性能。

关于java - android shared element transition start transition有延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74659324/

相关文章:

java - 空白布局 - eglSurfaceAttrib 未实现

android - 在没有完成()的情况下重新加载 Android 中的 Activity

java - 交换两个整数的函数

java - 图标处理抛出 NullPointerException

java - Android ComputableFuture 无法与 Firestore 配合使用

java - 单击主页/后退按钮时的 android 进度条

android - 在类中使用 getString()

java - 如何允许请求参数有多个预定义(枚举)值?

java - 在同一个包中导入一些类

java - 'Tween Engine' 类的 Eclipse dalvik 链接在 android 上失败但在桌面上工作