Gmail应用如何实现平面视图层次结构?

时间:2015-05-23 23:52:15

标签: android android-layout

当我进入我的开发者选项并打开"显示布局边界"我试图优化我的列表项目时我注意到Gmail应用具有完全平坦的视图层次结构?这个黑魔法是如何实现的?

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:10)

他们可能会覆盖onDraw并直接绘制到画布上,而不是将视图添加为子视图。

http://developer.android.com/training/custom-views/custom-drawing.html

答案 1 :(得分:1)

嗯,我可能在一些细节上错了,但他们正在使用自定义视图。小部件,如果你愿意的话。

实际上,你有一个类扩展了一些东西,很可能是一个View,一个LinearLayout或一个RelativeLayout,而不是你以编程方式添加你需要的东西,并确保你有从外部访问东西的方法,所以当你创造了一个新的东西",你将能够给它任何你想要的文字或图像。

在你的情况下,我会做的是一个扩展LinearLayout的小部件,我会在那里添加图像,3个textViews(名称,主题,实际邮件)和一个日期的TextView。如果你也想要这个明星,这将是一个额外的东西,一个ImageView。你可以随心所欲地移动它们,这就是它。

如果你想要一些代码,请告诉我,如果你真的需要,我会给你更多细节。

答案 2 :(得分:0)

您可以使用Litho实现相同的平面UI。光刻在下面使用了回收站视图。与仅使用视图持有者重用视图池中的视图的回收器视图不同,Litho重用了每个ui元素(Imageview,textview等)。

https://fblitho.com/static/videos/incremental_recycling.mp4

优势:

  • 平面界面。
  • 异步布局膨胀。 (视图测量已卸载到后台线程)
  • 增量安装。 (默认情况下,仅显示可见视图)

缺点:

  • 没有视觉布局编辑器。
  • 开始学习的曲线。

在项目中实现此功能后,您可以自己查看结果。