重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Java的注解(Annotation)相当于一种标记,在程序中加入注解就等于为程序打上某种标记,标记可以加在包,类,属性,方法,本地变量上。然后你可以写一个注解处理器去解析处理这些注解(人称编译时注解),也可以在程序运行时利用反射得到注解做出相应的处理(人称运行时注解)。
成都创新互联-专业网站定制、快速模板网站建设、高性价比江汉网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式江汉网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖江汉地区。费用合理售后完善,十多年实体公司更值得信赖。开发Android程序时,没完没了的findViewById, setOnClickListener等等方法,已经让大多数开发者头疼不已。好在市面上有所谓的注解框架可以帮助开发者简化一些过程。比较流行的有butterknife, annotations, xutils, afinal, roboguice等等。今天我们就来对比一下这些注解框架。
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的原理是运行时注解。先来看下一个demo。
public class MainActivity extends Activity { @Bind(R.id.tv1) TextView mTv1; @Bind(R.id.tv2) TextView mTv2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); mTv1.setText("tv1已经得到了控件的索引"); } @OnClick(R.id.tv2) public void tv2OnClick() { Toast.makeText(this, "tv2被点击了", Toast.LENGTH_SHORT).show(); }