
我有一个带有图像的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 – 将重新输入动画更改为列表中的另一个项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)