Android ViewBinding 是一种用于替代传统的 findViewById
和 findViewById
的视图绑定方法。它允许你以类型安全的方式访问应用布局中的视图元素,而无需手动查找它们。ViewBinding 的实现原理如下:
-
布局文件解析:在编译期间,Android Gradle 插件会扫描项目中的布局文件(XML 文件),并为每个布局文件生成一个对应的 ViewBinding 类。这个类的名称与布局文件的名称相关联,通常以驼峰命名法,例如,如果你的布局文件名为
activity_main.xml
,则生成的 ViewBinding 类名为ActivityMainBinding
。 -
生成绑定类:为每个布局文件生成的 ViewBinding 类包含对布局中每个具名视图元素的引用,这些引用的名称通常与 XML 中的
android:id
属性名称相同,但采用了驼峰命名法。这个生成的类会在build/generated/data_binding_base_class_source_out/debug/out
目录下的your/package/name/databinding
中找到。 -
绑定视图:在你的代码中,你可以通过调用
inflate
方法或bind
方法来创建 ViewBinding 对象,这将返回与特定布局相关的 ViewBinding 实例。例如,如果你有一个名为activity_main.xml
的布局,你可以通过以下方式创建ActivityMainBinding
:ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater()); // 或者 ActivityMainBinding binding = ActivityMainBinding.bind(rootView);
这将返回一个包含布局中所有视图引用的
ActivityMainBinding
对象。 -
使用 ViewBinding:一旦你有了 ViewBinding 对象,你可以使用它来访问布局中的视图元素。例如,如果你的布局包含一个名为
textView
的 TextView,你可以这样访问它:binding.textView.setText("Hello, ViewBinding!");
-
编译时检查:ViewBinding 在编译时执行,这意味着它提供了类型安全的访问,如果你尝试访问布局中不存在的视图或使用不匹配的数据类型,编译器将会报错。
总之,Android ViewBinding 的实现原理基于编译时生成的 ViewBinding 类,这些类包含对布局中视图元素的引用,以实现类型安全的视图访问,从而简化了 Android 应用的视图绑定过程。这不仅减少了样板代码,还降低了运行时查找视图的开销。
要查看生成的 ActivityMainBinding
类,你可以在 Android Studio 中导航到项目文件目录中的 build/generated/data_binding_base_class_source_out/debug/out
文件夹(或与你的 build variant 相关的目录,比如 release
)。在该目录下,你应该能够找到生成的 ViewBinding 类。
通常,生成的 ViewBinding 类会在以下位置:
app/build/generated/data_binding_base_class_source_out/debug/out/your/package/name/databinding
请确保替换 your/package/name
为你的应用的实际包名,然后在 databinding
文件夹中查找名为 ActivityMainBinding.java
或与你的布局文件名相关联的类文件。
如果你无法在上述位置找到生成的 ViewBinding 类,可能需要重新构建项目以确保生成了正确的类。在 Android Studio 中,你可以尝试执行 “Build” -> “Rebuild Project” 操作,以重新生成 ViewBinding 类和其他构建文件。然后,你应该能够在相应的目录中找到 ActivityMainBinding.java
文件。
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓(文末还有ChatGPT机器人小福利哦,大家千万不要错过)