Android 的ViewBinding实现的原理

Android ViewBinding 是一种用于替代传统的 findViewByIdfindViewById 的视图绑定方法。它允许你以类型安全的方式访问应用布局中的视图元素,而无需手动查找它们。ViewBinding 的实现原理如下:

  1. 布局文件解析:在编译期间,Android Gradle 插件会扫描项目中的布局文件(XML 文件),并为每个布局文件生成一个对应的 ViewBinding 类。这个类的名称与布局文件的名称相关联,通常以驼峰命名法,例如,如果你的布局文件名为 activity_main.xml,则生成的 ViewBinding 类名为 ActivityMainBinding

  2. 生成绑定类:为每个布局文件生成的 ViewBinding 类包含对布局中每个具名视图元素的引用,这些引用的名称通常与 XML 中的 android:id 属性名称相同,但采用了驼峰命名法。这个生成的类会在 build/generated/data_binding_base_class_source_out/debug/out 目录下的 your/package/name/databinding 中找到。

  3. 绑定视图:在你的代码中,你可以通过调用 inflate 方法或 bind 方法来创建 ViewBinding 对象,这将返回与特定布局相关的 ViewBinding 实例。例如,如果你有一个名为 activity_main.xml 的布局,你可以通过以下方式创建 ActivityMainBinding

    ActivityMainBinding binding = ActivityMainBinding.inflate(getLayoutInflater());
    // 或者
    ActivityMainBinding binding = ActivityMainBinding.bind(rootView);
    
    

    这将返回一个包含布局中所有视图引用的 ActivityMainBinding 对象。

  4. 使用 ViewBinding:一旦你有了 ViewBinding 对象,你可以使用它来访问布局中的视图元素。例如,如果你的布局包含一个名为 textView 的 TextView,你可以这样访问它:

    binding.textView.setText("Hello, ViewBinding!");
    
    
  5. 编译时检查: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开发的各个知识点。
img
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。

欢迎大家一键三连支持,若需要文中资料,直接扫描文末CSDN官方认证微信卡片免费领取↓↓↓(文末还有ChatGPT机器人小福利哦,大家千万不要错过)

PS:群里还设有ChatGPT机器人,可以解答大家在工作上或者是技术上的问题

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值