android– 将重新输入动画更改为列表中的另一个项目

android– 将重新输入动画更改为列表中的另一个项目,第1张

概述我有一个带有图像的RecyclerView,当我按下图像时,应用程序会打开另一个包含ViewPager的活动,该活动具有相同的图像但位于我选择的图像的位置.我已经完成了Lollipop的转换,在活动之间使用supportPostponeEnterTransition和supportStartPostponedEnterTransition在被调用的活动中共

我有一个带有图像的RecyclerVIEw,当我按下图像时,应用程序会打开另一个包含VIEwPager的活动,该活动具有相同的图像但位于我选择的图像的位置.

我已经完成了Lollipop的转换,在活动之间使用supportPostponeEnterTransition和supportStartPostponedEnterTransition在被调用的活动中共享此图像,等待vIEwPager加载图像以开始转换.

当我进入被调用的活动时,当我按下时,转换是正常的.

我面临的问题是,如果我移动到被调用活动的VIEwPager中的另一个图像,当我按下它时动画显示它在开始时选择的图像,而不是当前选择的图像.

我已经能够将动画图像更改为在被调用活动中选择的图像:

@OverrIDepublic voID onBackpressed() {  VIEw vIEw = ((ImageDetailFragment) adapter.getFragment(vIEwPager,      vIEwPager.getCurrentItem())).getTransitionVIEw();  VIEwCompat.setTransitionname(vIEw, Constants.Transition_IMAGE);  super.onBackpressed();}

但它返回到调用活动列表中原始图像的相同位置.

如何使图像返回其在调用活动列表中的位置?

解决方法:

要做的第一件事是确保视图在没有任何Activity转换的情况下正常工作.也就是说,当您使用VIEwPager从Activity返回时,RecyclerVIEw Activity应该显示VIEwPage正在显示的VIEw.调用VIEwPager活动时,请使用startActivityForResult并使用结果将RecyclerVIEw滚动到正确的位置.

一旦工作,可以使活动过渡工作.我知道您已经在RecyclerVIEw中为每个VIEw提供了不同的Transitionname,对吧?绑定VIEw时,调用setTransitionname并为其指定可重复的名称.通常,这是图像URL或光标行ID,或者最糟糕的是一些像“image_”索引一样的munged索引.

您需要做的下一件事是为调用Activity(退出)和被调用活动(enter)设置SharedElementCallback.在每个中,您将需要覆盖onMapSharedElements回调以重新映射共享元素.

@OverrIDepublic voID onMapSharedElements(List<String> names, Map<String, VIEw> sharedElements) {    // assuming just one shared element, excuse the ugly code    sharedElements.put(names.get(0), mSharedElement);        }

这里,mSharedElement已设置在调用(RecyclerVIEw)活动中的onActivityReenter和onCreate中以及调用(VIEwPager)活动中的finishAfterTransition(onBackpressed?)之前.

onActivityReenter专门为此案例提供了新功能.您可以在调用的Activity完成之前查看结果.

总结

以上是内存溢出为你收集整理的android – 将重新输入动画更改为列表中的另一个项目全部内容,希望文章能够帮你解决android – 将重新输入动画更改为列表中的另一个项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1110849.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存