问题标签 [sharedelementcallback]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10995 浏览

android - ViewPager 片段 - 共享元素转换

我正在开发的应用程序显示图像网格。当您点击图像时,它会进入详细信息视图。详细信息视图包含一个 ViewPager,它允许您在网格中的每个图像之间滑动。这是通过传递路径列表(包含网格中的每个图像)以及被点击的图像的偏移量来完成的,因此可以将 ViewPager 设置为最初显示该页面。

在 ViewPager 中的当前偏移页面的 Fragment 内进行共享元素转换的最佳方式是什么?网格 (RecyclerView) 图像应在当前页面中展开为全屏图像。我看到了推迟和恢复活动转换的能力,因此应用程序将等待显示共享元素转换,直到从磁盘加载图像。但我希望能够使其动画到视图寻呼机中的正确页面,并在用户返回时退出到当前页面(因为您可以在页面之间滑动)。如果您现在滑动到不同的页面,初始页面就是动画回到网格中的内容。

目前,我为视图寻呼机的 Fragments 中的每个图像分配了一个“image_[index]”格式的转换名称。当我开始详细信息活动时,我使用相同的 transitionName ,索引是偏移量。

与此相关,我还想知道如何使涟漪与长按一起工作。当您更改视图的激活状态时,它似乎取消了涟漪。我想要一个类似于 Gmail 的效果,在长按完成并触发激活状态后,涟漪会重新开始并迅速结束。

0 投票
0 回答
558 浏览

android - 如何在 Activity 转换期间使用共享元素快照视图?

我对List<View> sharedElementSnapshots传递给SharedElementCallback'sonSharedElementStart()onSharedElementEnd()方法的参数感到困惑。大概这些快照视图是为了在共享元素转换期间用作临时占位符。例如,假设活动A显示了缩略图,活动B显示了同一图像的高分辨率版本,加载和显示需要几秒钟。不必等待高分辨率图像完成加载,快照视图可以临时代替它使用。

我感到困惑的部分是快照视图最初是如何使用的。它们是否应该被添加到活动的视图层次结构中?或者也许它们应该被添加到窗口装饰视图中ViewOverlay?无论哪种方式,我都看不到此时如何切换过渡共享元素视图...在andonMapSharedElements()之前调用,这意味着过渡名称到共享元素的最终映射已经建立。onSharedElementStart()onSharedElementEnd()View

任何提示将不胜感激。

0 投票
1 回答
1102 浏览

android - 如何在片段之间使用 Viewpager 进行 SharedElement 转换

我对 SharedElement Transitions 进行了很多研究,但是我只能找到 onclick 事件的 Transitions。

我想要片段之间的动画,其中动画的速度由用户的滚动速度控制。如果用户在滚动对象之间停止,则对象应该是静止的。示例:在此处输入图像描述 在此图像中,viewpager 位于 screen1 和 screen2 的中间,动画对象处于停止状态。

这些对象从一个屏幕移动到另一个屏幕并改变它们的位置。

我已经弄清楚了翻译动画部分,但是如何在片段之间使用 viewpager 实现这种共享元​​素转换。此外,它应该以手指滑动的速度滚动/动画。

MainActivity.java

FirstFragment.java- 当用户在 viewpager 上滑动时,该片段有一个必须与第二个片段共享的图像视图。

MyFragmentPagerAdapter.java

second_fragment.xml

first_fragment.xml

Edit1-这个问题不是评论中提到的链接的副本,因为该问题是我问题的子部分。不同之处在于,该问题中的动画以静态速度发生在点击时。但是在我的问题中,动画的速度必须等于 ViewPager 滑动速度的速度。

0 投票
1 回答
838 浏览

android - 共享元素结束监听器

addSharedElement()与片段一起使用,我想知道是否有可能添加侦听器以在此转换结束后执行某些方法。谢谢您的帮助。

0 投票
1 回答
656 浏览

android - 共享元素转换后活动中的内存泄漏进入转换协调器

我在EnterTransitionCoordinator使用共享元素转换时遇到内存泄漏问题。您可以在下面看到应用程序结构:

应用结构

它有 2 个屏幕,第一个是一个ActivitywithDrawerLayout和几个Fragments 里面。其中一个包含照片列表,单击特定照片会触发共享元素FragmentViewPager位于另一个中的元素转换Activity。我SharedElementCallback在退出和重新输入这两个Activitys 时使用 custom 来映射正确View的共享元素转换。我的代码基于这篇很棒的博客文章:https ://android.jlelse.eu/dynamic-shared-element-transition-23428f62a2af

问题是,在ViewPager's 项目之间滑动后,Fragments 被销毁,但View用于共享元素转换的被保留在Activity'sActivityTransitionState中,特别是在EnterTransitionCoordinator. 重新进入到ActivitywithDrawerLayout然后打开另一个时也是如此Fragment。即使s 被销毁,View对用于共享元素转换的 s 的引用仍保留为 int s ,这会导致内存泄漏。ActivityFragment

我的问题:有没有避免这种内存泄漏的好方法?

0 投票
1 回答
147 浏览

android - SharedTransitionElement 动画中的 OutOfMemoryError

我在我的应用程序中使用 sharedElementTransition 并且我使用了 sharedElementCallback 的自定义类来在运行时更新视图。它有时会导致 OutOfMemory 错误,因此我对其进行了搜索,并从该解决方案中使用了 LeakFreeSupportSharedElementCallback 代码来避免崩溃,但我仍然经常收到以下崩溃日志。

自定义回调类:

0 投票
0 回答
31 浏览

android - SharedElementTransition 可以交互吗?

  • SharedElementTransition在我的应用程序中使用过,但我也想通过交互式触摸执行相同的动画。

  • 在 iOS 中他们有这个选项,但我在 Android 中找不到类似的解决方案。如果我通过重写onTouch方法编写自定义动画,那么稳定和完美需要很长时间。

  • 所以,我首先要确定是否SharedElemnetTransition可以进行交互,或者是否有任何简单或更有效的解决方案?任何想法都将是非常可观的。谢谢

0 投票
3 回答
4519 浏览

java - 在全屏android中使用recyclerview幻灯片图像

我已经创建了墙纸应用程序,我正在从 recyclerview 的 firebase 数据库中加载图像。当我单击 recyclerview item(image) 时,该项目的图像 url 发送到下一个活动,然后使用 glide 将该 url 加载到 imageView 中。

现在我想把它改成Image-Slider 之类的东西。通过单击 recyclerView 项目,我想全屏显示该图像,并且还想从左或右滑动(下一个或上一个)。但我不知道该怎么做。

这是我的代码。

FeaturedAdapter.java

查看活动

活动视图.xml

custom_image.xml

屏幕录制

0 投票
1 回答
91 浏览

android - 为共享元素回调添加侦听器而不更改视图可见性

我在两个活动之间使用共享元素转换。第二个活动由包含片段的视图寻呼机组成。我想在共享元素过渡结束时进行进一步的更改。这是回调:

打印最后的日志语句 GONE。但视图仍然在屏幕上可见。如何改变其可见性?