Using 层次结构查看器 http://developer.android.com/guide/developing/debugging/debugging-ui.htmlGmail 对话视图上显示了一个有趣且不寻常的布局层次结构:
-
All单个对话中的消息呈现在singleWebView(具体来说是
com.google.android.gm.CustomWebView
,如左图所示)。仅呈现消息正文 -标题所在的空格留空.
- 在 WebView 的顶部覆盖了一个
com.google.android.gm.MessageHeaderScrollView
(见右图)它使用HybridConversationScrollContainer
定位一个MessageHeaderView
在对话视图中每条消息的正确位置。
<->
那么,这是如何(以及为什么)实现的呢? Android 开发人员可以并且应该渴望在自己的应用程序中重新创建这种东西吗?
显然有可能why性能 - WebView 使用消息文本的快速本机 WebKit 渲染,并且单个 WebView 可能比每条消息的单独 WebView 更有效。如果有人看过有关其性能优势的任何优秀博客文章,我会很感兴趣。
然而,这种方法存在明显的复杂性成本(相对于天真地使用可扩展列表视图 http://developer.android.com/reference/android/widget/ExpandableListView.html里面有一些 TextViews 或者其他什么) -HybridConversationScrollContainer
必须以某种方式找出消息头应该在网络渲染上的位置,以便将其定位MessageHeaderViews
正确。我想知道的是:How它能计算出这些偏移量吗?
顺便说一句,我能想到的唯一方法是基于 javascript - 在 WebView 中使用 javascript 收集标题坐标,然后使用WebView.addJavascriptInterface()
将这些坐标传递给 Java 并HybridConversationScrollContainer
。我自己还没有尝试过这样做,所以我不确定它是否真的有效。
There isandroid 开发者博客上的一篇简短文章讨论了addJavascriptInterface()
method:
http://android-developers.blogspot.com/2008/09/using-webviews.html http://android-developers.blogspot.com/2008/09/using-webviews.html
如果MessageHeaderScrollView
可以作为开源库发布 - 我会使用它! - 但鉴于 Gmail 应用程序已关闭,这似乎不太可能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)