android– 究竟布局通胀发生在哪里?

android– 究竟布局通胀发生在哪里?,第1张

概述嗨,这些问题似乎非常基本,但我没有找到任何答案.当我们setContentView(R.layout.somelayout)时,我们的布局XML文件被LayoutInflater服务填充.但我想知道它究竟发生在哪里.我没有在活动源代码中找到任何膨胀xml文件的代码.还有哪些是为R中的视图生成的ID?提前致谢.解决方法:较少的

嗨,这些问题似乎非常基本,但我没有找到任何答案.

当我们setContentVIEw(R.layout.somelayout)时,我们的布局XML文件被LayoutInflater服务填充.但我想知道它究竟发生在哪里.我没有在活动源代码中找到任何膨胀xml文件的代码.

还有哪些是为R中的视图生成的ID?

提前致谢.

解决方法:

较少的文档和为基本过程编写和调用setContentVIEw()和其他方法的调用.

实际上,当你调用setContentVIEw(R.layout.< layout_file_name>);. Android简介会出现在图片中,它将从其ID中为给定的布局文件充气,并为当前的Activity准备VIEw并放入顶级.

调用setContentVIEw(R.layout.< layout_name>)时会发生什么?

AndroID系统接收此引用并使用它来使树无效,测量和绘制.层次结构的根节点请求其子节点自己绘制 – 在
转而,每个视图组节点负责调用每个自己的子视图来绘制自己.孩子可以在父母中请求大小和位置,但父对象最终决定每个孩子的大小. AndroID按顺序(从层次结构树的顶部)解析布局元素,实例化视图并将它们添加到父级.因为这些按顺序绘制,如果有重叠位置的元素,
要绘制的最后一个将位于先前被吸引到该空间的其他人之上.

更新:

好的,看了我发现后,

当你调用Activity类基类的setContentView()时,它调用Window类的setContentView()的抽象方法,这是抽象方法,并且该方法的唯一一个覆盖在PhoneWindow类中.看起来像,

 @OverrIDe    public voID setContentVIEw(int layoutResID) {        if (mContentParent == null) {            installDecor();        } else {            mContentParent.removeAllVIEws();        }        mLayoutInflater.inflate(layoutResID, mContentParent);        final Callback cb = getCallback();        if (cb != null) {            cb.onContentChanged();        }    }

因此,查看通货膨胀是在这一类中发生的.

更新:2关于R.java文件生成..

Aapt(AndroID资产包装工具) – 此工具编译所有XML布局文件和AndroIDManifest.xml文件.除了编译版本,这还会生成一个R.java文件,其中包含已编译资源的所有引用.

存储在res子目录中的资源包括诸如图标,布局和字符串之类的东西.这些是使用aapt工具编译到名为R.java的文件中,存储在gen /子目录中.

从aapt帮助

aapt p[ackage] [-d][-f][-m][-u][-v][-x][-z][-M AndroIDManifest.xml] \        [-0 extension [-0 extension ...]] [-g tolerance] [-j jarfile] \        [--min-sdk-version VAL] [--target-sdk-version VAL] \        [--max-sdk-version VAL] [--app-version VAL] \        [--app-version-name TEXT] [--custom-package VAL] \        [-I base-package [-I base-package ...]] \        [-A asset-source-dir]  [-G class-List-file] [-P public-deFinitions-file] \        [-S resource-sources [-S resource-sources ...]]         [-F apk-file] [-J R-file-dir] \        [raw-files-dir [raw-files-dir] ...]   Package the androID resources.  It will read assets and resources that are   supplIEd with the -M -A -S or raw-files-dir arguments.  The -J -P -F and -R   options control which files are output.

命令为aapt :(对于HelloWorld AndroID应用程序)

aapt \package -v -f -m -M AndroIDManifest.xml -S .\bin\res -S .\res \   -I C:\local\androID-sdk-windows\platforms\androID-15\androID.jar \   -J .\gen --generate-dependencIEs

结果看起来像,

Configurations: (default) hdpi ldpi mdpifiles:  drawable\ic_launcher.png    Src: (hdpi) .\res\drawable-hdpi\ic_launcher.png    Src: (ldpi) .\res\drawable-ldpi\ic_launcher.png    Src: (mdpi) .\res\drawable-mdpi\ic_launcher.png  layout\main.xml    Src: () .\res\layout\main.xml  values\strings.xml    Src: () .\res\values\strings.xml  AndroIDManifest.xml    Src: () AndroIDManifest.xmlResource Dirs:  Type drawable    drawable\ic_launcher.png      Src: (hdpi) .\res\drawable-hdpi\ic_launcher.png      Src: (ldpi) .\res\drawable-ldpi\ic_launcher.png      Src: (mdpi) .\res\drawable-mdpi\ic_launcher.png  Type layout    layout\main.xml      Src: () .\res\layout\main.xml  Type values    values\strings.xml      Src: () .\res\values\strings.xmlIncluding resources from package: \C:\local\androID-sdk-windows\platforms\androID-15\androID.jarapplyfileOverlay for drawabletrying overlaySet Key=ic_launcher.pngbasefile 0 has flavor ,,,,,,,,,,,hdpi,,,,,,,basefile 1 has flavor ,,,,,,,,,,,ldpi,,,,,,,basefile 2 has flavor ,,,,,,,,,,,mdpi,,,,,,,overlayfile 0 has flavor ,,,,,,,,,,,hdpi,,,,,,,overlayfile 1 has flavor ,,,,,,,,,,,ldpi,,,,,,,overlayfile 2 has flavor ,,,,,,,,,,,mdpi,,,,,,,found a match (0) for overlay file ic_launcher.png, \for flavor ,,,,,,,,,,,hdpi,,,,,,,found a match (1) for overlay file ic_launcher.png, \for flavor ,,,,,,,,,,,ldpi,,,,,,,found a match (2) for overlay file ic_launcher.png, \for flavor ,,,,,,,,,,,mdpi,,,,,,,applyfileOverlay for layoutapplyfileOverlay for animapplyfileOverlay for animatorapplyfileOverlay for interpolatorapplyfileOverlay for xmlapplyfileOverlay for rawapplyfileOverlay for colorapplyfileOverlay for menuapplyfileOverlay for mipmap    (new resource ID ic_launcher from \    .\bin\res\drawable-hdpi\ic_launcher.png)    (new resource ID ic_launcher from \    .\bin\res\drawable-ldpi\ic_launcher.png)    (new resource ID ic_launcher from \    .\bin\res\drawable-mdpi\ic_launcher.png)    (new resource ID main from .\res\layout\main.xml)  Writing symbols for class R.
总结

以上是内存溢出为你收集整理的android – 究竟布局通胀发生在哪里?全部内容,希望文章能够帮你解决android – 究竟布局通胀发生在哪里?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1106417.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存