温馨提示:这篇文章已超过441天没有更新,请注意相关的内容是否还可用!
摘要:,,本文详细介绍了Android中的ViewBinding技术,包括其使用方法、优势及注意事项。通过ViewBinding,开发者能更高效地绑定界面元素,减少代码冗余,提高应用性能。文章还探讨了如何在大厂环境中应用ViewBinding,助力实现大厂梦,强调其在提高开发效率和代码质量方面的作用。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activityProgressbarBinding = ActivityProgressbarBinding.inflate(getLayoutInflater());
// 可以一步到位设置视图
setContentView(activityProgressbarBinding.getRoot());
// 使用绑定类的实例来引用任何View(需要在XML中设置id)
activityProgressbarBinding.progress1.setMax(120);
activityProgressbarBinding.progress3.setProgress(20);
在Fragment中使用视图绑定
要在Fragment中设置与Fragment一起使用的绑定类的实例,请在Fragment的onCreateView()方法中按照以下步骤操作:
1、调用绑定类中包含的静态方法inflate(),这将为要使用的Fragment创建绑定类的实例。
2、通过调用getRoot()方法获取对根视图的引用。
3、从onCreateView()方法返回根视图,使其成为屏幕上的活动视图。
注意:inflate()方法要求你传入布局充气器,如果布局已经inflated,你可以改为调用绑定类的静态bind()方法。
示例如下:
private FragmentMineBinding binding;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentMineBinding.inflate(inflater, container, false);
View view = binding.getRoot();
return view;
@Override
public void onDestroy() {
super.onDestroy();
binding = null;
提供不同配置的提示
当你为多个配置声明视图时,有时根据特定布局使用不同的视图类型是有意义的,根据不同的屏幕方向或尺寸,在这种情况下,视图绑定支持一个tools:viewBindingType属性,允许你告诉编译器在生成的代码中使用什么类型。
由于技术限制,视图绑定代码生成器无法自动决定生成什么类型的字段,需要手动使用binding.userBio作为TextView。
为了解决这个限制,你可以在布局文件中使用tools:viewBindingType属性,指定生成的类型,在res/layout/example.xml中,你可以这样设置:
<!-- 其他布局代码 --> 当你跨不同配置声明视图时,务必在所有相关布局中保持一致。 与findViewById相比的优势 视图绑定与findViewById相比具有显著的优势: 空安全:由于视图绑定直接创建了视图的引用,因此不存在因视图ID无效而导致空指针异常的风险,当视图仅存在于某些配置中时,绑定类中的相关字段会被标记为@Nullable。 类型安全:绑定类中的每个字段的类型与其在XML文件中引用的视图类型相匹配,这意味着没有类转换异常的风险。 这些差异意味着布局和代码之间的不兼容性将在编译时而不是运行时被发现。 与数据绑定的比较 视图绑定和数据绑定都生成用于直接引用视图的绑定类,视图绑定旨在处理更简单的用例,并提供以下优于数据绑定的好处: 自我介绍 我是一名在阿里工作的安卓工程师,深知大多数初中级安卓工程师在提升技能时面临的挑战,我整理了一份《最新Android移动开发全套学习资料》分享给大家,希望能帮助大家自学成长。 由于文件较大,这里仅展示部分目录,每个节点包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频等。 如果你需要这些资料,可以添加我的V(备注Android)无偿领取。 我也分享了一些面试真题和知识体系思维导图,希望能帮助大家增加通过技术面试的几率,这些内容都供大家参考和学习。 写在最后 很多人在学习Android的过程中或遇到瓶颈期时总会遇到问题,对此,我整理了一些资料,包括面试真题解析、知识体系学习思维导图等,都可以免费分享给大家,希望我的GitHub能为大家提供一些帮助,如果大家熟练掌握GitHub中列出的知识点,将大大增加通过技术面试的几率,这些内容都供大家参考和互相学习。 --- 非常感谢大家的阅读和支持!如果以上内容对你有帮助,请点赞关注,我会继续分享更多有用的技术知识和经验!
还没有评论,来说两句吧...