材料设计-将卡片扩展(过渡)到全屏

10
我在实现Material Design for Android的卡片视图的展开功能时遇到了困难。在他们的设计指南中,他们展示了不同的 Card 组件布局,但其中一个示例显示了单击后的全屏卡片过渡
这是他们网站上显示的过渡效果:

Card Transitions to fullscreen

我尝试实现类似于这样的功能,但这需要比他们指南示例中建议的要多得多的工作量... Material Design 是如何实现这一点的?是否有内置功能可以实现此功能?我应该手动调整卡片大小以适应屏幕,还是应该使用全卡片视图的全新片段或活动?
这里是包含示例的 Design 指南,但没有关于过渡的说明,甚至在记录的 Develop 页面上也没有,这个页面非常简短。

1
查找共享元素转换。 - NIKHIL MAURYA
1
嗨,Nikhil,感谢你的评论,似乎共享转换会起作用,但仍然感觉糟糕的是Material Design没有提到这一点。我不是Material/Android老手,所以我错了吗?认为Material Design应该描述如何实现这一点,或者至少在他们的指南中提到它? - eja
1
我认为他们没有提供实现细节。因为这些指南可以在任何地方使用,所以如何实现并不是他们关心的事情。 - NIKHIL MAURYA
1个回答

2

TL;DR

在上面附加的gif图像中,RecyclerView和详细的CardView应该有它们自己单独的Fragments,这些Fragments在一个单一的Activity中运行。

跳转到链接以获取动画部分。

详情

为什么?我们有三个选择:

  1. 将两个视图保留在一个Activity中,并在单击事件上将详细的CardView重叠在RecyclerView上。 (这是愚蠢的,也不是一个好习惯)

  2. 为两个视图(Recycler和全屏卡片)创建单独的Activities

  3. 我上面提到的那个。

RecyclerView和详细视图显示为两个单独的Fragments

现在之所以不选择第二个选项是因为它比第三个选项更耗费性能。在小规模应用程序中我们可能没有注意到这一点,但当应用程序扩展时它肯定会产生影响。此外,创建Fragments更有效,因为我们在视图之间共享公共视图和变量。所以最好的选择是第三个。 请注意,这不是一个通用情况,使用将根据您的要求而有所不同。


一开始使用Fragments可能会让人感到压倒性,但当你掌握它时,它可以使代码更有组织。您应该尝试将您的应用程序分成几个广泛划分的活动,并在其中包含您想要的尽可能多的Fragments。

下面是一些帮助我实现你正在寻找的完全相同的东西的链接。

它们三个都帮助我更好地理解整个Material Motion框架的工作原理以及如何在我的程序中实现它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接