Android注解框架实战-ButterKnife(非原创)

文章大纲

  1. Android注解框架介绍
  2. ButterKnife实战
  3. 项目源码下载

一、框架介绍

为什么要用注解框架?
  在Android开发过程中,我们经常性地需要操作组件,操作方法有findViewById, setOnClickListener等等方法,这个过程会让工程师抓狂的,好在市面已经有大神封装好的的注解框架可以帮助开发者简化一些过程,下面就让我来给大家介绍一些常见的注解框架。

ButterKnife框架介绍
  首先看下Butterknife,来自Jakewharton大神的力作,特点是接入简单,依赖一个库就好了。另外在Android Studio上还有提供一个插件,自动生成注解与类属性。Butterknife目前支持的注解有: View绑定(Bind),资源绑定(BindBool, BindColor, BindDimen, BindDrawble, BindInt, BindString),事件绑定(OnCheckedChanged, OnClick, OnEditorAction, OnFocusChange, OnItemClick, OnItemLongClick, OnItemSelected, OnLongClick, OnPageChange, OnTextChanged, OnTouch),ButterKnife是在编译时候生成新的class文件,而不是在运行时处理这个逻辑,所以不影响使用性能。

AndroidAnnotations框架介绍
  该框架的原理跟Butterknife一样,都是在编译时生成代码,不过annotations并不是生成代码供对应的类调用去给带注解的变量、方法赋值,而是直接生成一个继承带注解的类,这个类里面有对变量赋值,对注解方法调用的代码。运行时,直接运行的是annotations生成的类,而不是我们写的类。

XUtils框架介绍
  xutils的使用方式跟Butterknife一样,都是在成员变量,方法上添加注释,然后调用一个方法(xutils是ViewUtils.inject()方法)对成员变量赋值、事件方法设置到view上。不同的是,Butterknife是调用自动生成的代码来赋值,而xutils是通过反射来实现的。

温馨提示:

  1. 虽然现在的反射速度也很快了,但是还是不能跟原生代码相比,一旦注释用的多了,这初始化速度会越来越慢。通过上面注释处理的代码可以看出,xutils支持的注释目前主要有UI, 资源,事件,SharedPreference绑定。跟xutils一样是运行时利用反射去解析注释的框架还有afinal, roboguice等。
  2. 市面上还有很多其他的注释框架,但是万变不离其宗,不是反射就是自动生成代码。反射功能虽然强大,但是不可取,不仅会拖慢速度还会破话程序的封装性。个人认为生成代码的方案比较好,所有的功能都在编译时做了,并不会影响到用户的体验,唯一的缺点就是比反射难实现,不过我们程序不就是把难处留给自己,把快乐留给用户么!

二、ButterKnife实战

1. 添加xml布局

2. 在app的build.gradle中添加以下依赖

3. studio中下载插件



温馨提示:下载后,一般studio会自动提示重启

3. 添加ButterKnife声明


温馨提示:
  Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind。Fragment ButterKnife.bind(this, mRootView);这里的this不能替换成getActivity()。

  1. 获取组件并添加绑定关系
    右击布局,选择以下内容

选择以下内容

选择后自动生成以下代码:


温馨提示:属性布局不能用private or static 修饰,否则会报错

编译后运行程序,截图如下图所示:

其他绑定方式介绍

绑定注解
@BindView---->绑定一个view;id为一个view 变量
@BindView(R.id.tv_fm1)
TextView tvFm1;
@BindViews ---->绑定多个view;id为一个view的list变量
@BindViews({ R.id.btn1,R.id.btn2 })
List

你可能感兴趣的:(Android注解框架实战-ButterKnife(非原创))