gpt4 book ai didi

android - 在 viewpager fragment 内的 recyclerview 项目与 viewpager fragment 之间共享元素转换

转载 作者:行者123 更新时间:2023-11-29 02:27:41 25 4
gpt4 key购买 nike

我有两个 Activity MainAcitityDetailActivityMainActivityviewpager 的 fragment 中包含 recyclerview。当我点击项目时,它将转到 DetailActivity 并在 DetailAcitivtyviewpager fragment 内显示详细信息。

问题是:

  1. 我想在点击 MainActivity 中的 recyclerview 项并转到 DetailActivity 时添加 transition >.

  2. 当我从 DetailActivity 返回到 MainActivity 时,我希望它的过渡将转到我在 viewpager 中滑动的项目。

我怎样才能做到这一点?

注意:

-MainAcitivtyDetailAcitivty 都包含 viewpager

谢谢!

最佳答案

您需要使用唯一的 transitionName 标记您的两个 View 。

ViewCompat.setTransitionName(imageView, "some_unique_transitionName");

用这个新信息开始新的 Activity

ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, imageView, ViewCompat.getTransitionName(imageView));

activity.startActivity(intent, options.toBundle());

现在,关于新 Activity :根据您打开下一个 Activity 的方式及其 View 层次结构的复杂程度,您可能希望在 onCreate 和 supportStartPostponedEnterTransition(); 期间利用 supportPostponeEnterTransition();稍后设置时。我会让你阅读它的文档

除此之外,在需要动画的新 Activity 上找到 View 并在其上设置转换名称

activityImage.setTransitionName(transitionName);

让它撕裂。

您可能想要修改的其他一些东西可能是动画持续时间、插值器等。

 getWindow().getSharedElementEnterTransition().setDuration(200);
getWindow().getSharedElementReturnTransition().setDuration(200)
.setInterpolator(new DecelerateInterpolator());

并且,您的 Activity 的进入/退出转换(您将需要这个)

    Fade fade = new Fade();
fade.excludeTarget(android.R.id.statusBarBackground, true);
fade.excludeTarget(android.R.id.navigationBarBackground, true);
getWindow().setEnterTransition(fade);
getWindow().setExitTransition(fade);

请记住,共享元素转换遍历整个 View 层次结构以找出源 View 和目标 View ,并且只有在目标 Activity 完全放置后,框架反向转换才能给您想要实现的错觉,是的,如果 View 层次结构很复杂或 Activity 需要时间来设置等(取决于网络),您可能需要多做一些修改。

关于android - 在 viewpager fragment 内的 recyclerview 项目与 viewpager fragment 之间共享元素转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51317724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com