android - Material Design - 将卡片扩展(过渡)到全屏
问题描述
我正在努力实现 Material Design for Android 描述的卡片视图的扩展功能。
在他们的设计指南中,他们展示了Card组件的不同布局,但一个示例显示了卡片转换到全屏onClick。
这是他们网站上显示的过渡:
我已经尝试过实现这样的功能,但这需要比他们的指南示例所建议的更多的工作...... Material Design 如何实现这一点?是否有内置功能,我应该手动翻译并调整卡片以适应屏幕,还是应该为全卡片视图使用全新的片段或活动?
解决方案
TL;博士
在您上面附加的 gif 图像的情况下, 和 detailRecyclerView
应该CardView
有自己的独立Fragments
,它们在一个单独的Activity
.
跳转到动画部分末尾的链接。
细节
为什么这样?好吧,我们有三个选择:
将两个视图保留在一个 Activity 中,并在点击事件时将详细的 CardView 重叠在 RecyclerView 之上。(这很愚蠢,不是一个好习惯)
为两个视图创建单独的活动(回收器和全屏卡)
我上面提到的那个。
RecyclerView 和Detailed View 显示为两个单独的片段
现在不选择第 2 个选项的原因是因为与第 3 个选项相比,它对性能的要求更高。我们可能不会在小规模的应用程序中注意到这一点,但它肯定会在应用程序扩展时产生影响。另外,创建片段更有效,因为我们在视图之间共享公共视图和变量。所以最好的选择是三号。请注意,这不是通用情况,用法会根据您的要求而有所不同。
一开始使用 Fragments 可能会让人不知所措,但当你掌握它时,它会使代码更有条理。您应该尝试将您的应用程序划分为几个广泛划分的活动,并且在这些活动中应该有尽可能多的片段。
这里有一些链接可以帮助我实现您正在寻找的完全相同的东西。
他们三个帮助我更好地理解了整个 Material Motion 框架的工作原理以及如何在我的程序中实现它。
推荐阅读
- swift - 如何在 swift struct/class 类型中支持这种初始化?
- java - 从 Firebase 存储中检索和设置图像?
- python - 把名词改成代词造句
- powershell - 对于 dotnetcore 3.1 Windows 服务如何使用 powershell 脚本 5.1 停止、卸载、安装和启动服务
- ios - 如何在 iOS 中使用自定义 tableview 单元格笔尖,将滑动表视图控制器作为单元格的默认控制器
- c# - 如何反序列化具有相同名称但不同类型的 API 响应
- python - 极小极大的评估函数
- c++ - 如何在链表中搜索特定字符串并返回该值?
- google-chrome-extension - 浏览器扩展如何检测用户何时打开新标签?
- javascript - MongoDB - 如何在 $elemMatch 中使用 $expr