【问题标题】:Create UI like Chrome for Android为 Android 创建类似 Chrome 的 UI
【发布时间】:2023-03-07 09:09:01
【问题描述】:

我想在我正在尝试制作的应用中实现此行为 [https://github.com/gleue/TGLStackedViewController]

我想要达到的最接近的东西/效果是 Google Chrome 浏览器的行为方式。

  1. 磁贴/卡片界面
  2. 当用户下拉地址栏时能够访问一种导航形式(访问其他选项卡)
  3. 能够按照用户希望的任何顺序重新排列选项卡

照片取自Android Layout : How to implement a UI similar to deck of cards? SO question

有没有人尝试过实施这种行为?你们知道任何可以帮助实现这种效果的库吗?这将非常有帮助!谢谢

【问题讨论】:

  • 了解 ViewGroup 尤其是 onLayout 方法,这样会更容易制作像容器一样的自定义卡片
  • TGLStackViewController 有什么问题?
  • @KevinCrain 我正在寻找 ANDROID 的库 :)
  • @user1481694 我还没有看到一个android库,但是我知道如何创建一个视图堆栈并将选定的视图移动到前面,但是我还没有进入功能的动画部分。
  • 你只要求原生应用吗?

标签: android google-chrome android-view android-cards


【解决方案1】:

systemUI/Recents 包,如Andrei 所述,可以作为您的起点。它为 chrome 选项卡的平面呈现添加了更多内容。

自从我得到 L 更新以来,我一直想重构 systemUI/Recents 包。我终于明白了。

示例项目托管在:Link

即使视图组循环使用,它也会在每个滚动步骤上更新所有子级的进度图(子级属性)。这将导致大型数据集的滞后。几百块应该没问题。

示例项目使用毕加索从LoremPixel 加载和缓存图像。由于这些是随机图像并且可能重复,您可以通过查看图像的左下方来验证它们是否正确绑定。

【讨论】:

  • 您好 Vikram,感谢您分享该示例项目,我相信它不仅会帮助我,还会帮助更多的开发人员。我已经尝试研究该 AOSP 实现,但我遇到的问题是它仅适用于 Kitkat 和 Lollipop,对吗?我也在尝试支持 ICS。不过谢谢你。
  • @momoja 嗨,DeckView(以及它所基于的 AOSP 代码)使用仅在 Lollipop 及更高版本上可用的 API。因此,也不支持 KitKat。我希望能够在接下来的几周内降低最低 sdk 要求。我现在不能保证支持 ICS :( - github 页面将更新相关信息。
  • 是的@Vikram 我祈祷你这样做。我不会将您的评论标记为已接受的答案……至少还没有。由于问题是寻找前棒棒糖支持。我希望你明白。我确实希望您能成功并在这里更新它,因为社区非常感谢您的贡献。
  • @Vikram 你能否重构SystemUI/statusbar/stack 中的代码,用于L+ 中那些可堆叠的通知卡?如果你能帮我解决这个问题,我可以悬赏。
【解决方案2】:

如果您想查看 AOSP 代码,您正在寻找的功能实际上是开源的,您可以在 Android 5.0 的最新应用屏幕中找到它。 This 是您要在 github 上查看的代码。 您要从 AOSP 中提取的视图是 RecentsView。这将是最好的方法。

您还可以考虑扩展 StackView 并覆盖 onLayout() 以便让孩子排队。

另一种选择是扩展 ListView,覆盖 drawChild 或布局方法,并尝试根据它们的位置移动视图。你可以在herehere找到一些灵感

【讨论】:

  • 您好安德烈,非常感谢您。是的,我已经尝试过对此进行研究,如果我正确阅读了代码,他们正在为此使用自定义的 ScrollView ......我不太了解它,这就是我试图在 ListView 上实现它的原因使用相机和矩阵操作自定义 drawChild。不过还是谢谢你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 2014-08-25
  • 1970-01-01
  • 2020-01-04
  • 2016-11-11
  • 1970-01-01
相关资源
最近更新 更多