【问题标题】:what is the use of the layoutinflator?layoutinflater 有什么用?
【发布时间】:2011-02-22 09:50:29
【问题描述】:

我是一名新的 Android 开发人员。我试图从文档中了解 Layout inflator 的使用,但无法理解。 android中layout inflator有什么用?

在什么情况下必须使用它?

【问题讨论】:

  • 就像您开发将某些 xml 转换为有意义的对象的 xml 解析器,将 html 文本页面渲染为完整呈现的网页的 html 渲染器,甚至将难以理解的单词翻译成您理解的单词的翻译器一样,LayoutInflator 只是将布局资源文件 (xml) 转换为 View 对象。在执行此任务时,它还会将这些视图与您的活动的上下文挂钩,当然还会验证您的 xml 布局。

标签: android android-layout android-inflate


【解决方案1】:

更多技术说明

this

为了简洁而改写

基本上将您的 xml 平面文件视为没有空气的气球,而 LayoutInflator 所做的就是将其炸毁(或膨胀)成一个全尺寸的气球,即您的视图和或视图组。所以平面文件会膨胀到视野中。 (请随意批评这个比喻,但无论如何我都是这么想的)并且就用法而言,请检查this article。作者谈到了物体的手动膨胀。

对如何实现的解释有些过于简单了。

在内部,一个 xml 解析器,它映射到 Android.Resource 的缓存子集,查找被识别为视图的适用 xml,实例化它们并将它们添加到视图组。

去哪里看

LayoutInflator 内部的 rInflate 解析 xml 文件并将结果添加到父视图。查找具有特定签名的重载

void rInflate(XmlPullParser parser, View parent, final AttributeSet attrs, boolean finishInflate)

其他注意事项

LayoutInflater的cmets中

为了性能
* 原因,视图膨胀严重依赖于 XML 文件的预处理 * 这是在构建时完成的。因此,目前无法 * 在运行时在纯 XML 文件上使用带有 XmlPullParser 的 LayoutInflater。

因此,我们可以推断出文件中的 xml 在编译时被缓存,以减少处理文件解析所需的处理量。

  • 有关如何提取缓存数据的详细视图,请参阅文件中的XmlResourceParser loadXmlResourceParser(String file, int id, int assetCookie, String type) Resources.java
  • 有关 Layout Inflator 源代码,请参阅 LayoutInflater.java
  • 有关浏览 android os 源代码的方法,请参见 这个问题

我希望这能让事情更清楚一些。

【讨论】:

  • 这是一个很好的解释.. 我想回答但后来觉得你已经做得很好了。这是我的赞成票.. :)
【解决方案2】:

android中的Layout Inflator是Android中非常重要的一部分


                           _ _ _ _ _ _ _ _ _ _ _ _
                          |                       |
                          |       _____________   |            
                          | Name |_____________|--|-----<2 objects(TextView,EditText)> 
                          |       _____________   |            
                          | Age  |_____________|--|-----<2 objects(TextView,EditText)> 
                          |       _____________   |             
                          | Phone|_____________|--|-----<2 objects(TextView,EditText)> 
                          |                       |
                          |                       |
                          |                       |
                          |                       |
                          |        ------         |         
                          |       |BUTTON| -------|-----<1 objects(ButtonView)>      
                          |        ------         |
                          |                       |
                           -----------------------                           

We can clearly see from the above figure,

  • 活动上的 UI 元素显示在活动的后面,对用户来说是不可见的,复杂的操作发生在 安卓系统

What are these complex actions ?

  • 我们可以描述的简单方式是,为 android XML 文件和 instantiation 上存在的每个视图创建对象 在这里制作。
  • Inflator service 的帮助下,这些对象创建完成,这个过程称为layout Inflation

【讨论】:

  • 介意我问你为什么开始悬赏这个问题,然后决定自己回答吗?
  • 我正在研究这个问题,我在 stackoverflow 中找不到很好的答案。研究这个话题让我对这个问题有了一些了解,所以我回答了。但我一直保持悬赏开放,以查看比我在这里发布的更优质的答案。
  • 所以我认为你不喜欢我的回答,或者觉得它特别有用?
  • @ Terrance .... 你简化了你的答案,比以前更好......谢谢,我口袋里的 100 赏金积分给你 :)
猜你喜欢
  • 2011-03-29
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2011-09-08
  • 2012-06-02
  • 1970-01-01
相关资源
最近更新 更多