Android(安卓)ButterKnife注解框架
ButterKnife注解框架
ButterKnife注解框架是Android上的一个开发懒人库,可以让开发的效率变得更高,同时提升代码的简化性。
使用ButterKnife这个开源库可以让我们从大量的findViewById()和setonclicktListener()解放出来。其自定义注解的实现都是限定为RetentionPolicy.CLASS,也就是到编译出.class文件为止有效,在运行时不额外消耗性能,其是通过java注解自动生成java代码的形式来完成工作。而且上手很快,并且配合AndroidStudio的Zelezny插件可以一键生成对应layout里面所有的view id,再也不用一行一行的findViewById了。
GIT
https://github.com/JakeWharton/butterknife
Field and method binding for Android views which uses annotation processing to generate boilerplate code for you.
Eliminate findViewById calls by using @Bind on fields.
Group multiple views in a list or array. Operate on all of them at once with actions, setters, or properties.
Eliminate anonymous inner-classes for listeners by annotating methods with @OnClick and others.
Eliminate resource lookups by using resource annotations on fields.
解放控件对象实例化
也就是 findViewById(),一直以来的做法都是一个个定义,然后在 setContentView() 或 inflate() 之后一一来findViewById()进行实例化,而使用 ButterKnife,你只需要在代码中 使用注解方式进行对象申明,然后在 setContentView() 或 inflate() 之后调用一句话,那么申明的所有对象自动创建出来。
代码示例
class ExampleActivity extends Activity { @Bind(R.id.user) EditText username; @Bind(R.id.pass) EditText password; @BindString(R.string.login_error) String loginErrorMessage; @OnClick(R.id.submit) void submit() { // TODO call server... } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... }}
Gradle添加
compile 'com.jakewharton:butterknife:7.0.1'
Fragment的和adapter
Fragment的和adapter里也可以用,不过调用时要多加一个root view参数。Fragegment使用时记得同时继承onDestroyView,并在其中将ButterKnife.reset
public class FancyFragment extends Fragment { @Bind(R.id.button1) Button button1; @Bind(R.id.button2) Button button2; @Override View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fancy_fragment, container, false); ButterKnife.bind(this, view); // TODO Use "bind" views... return view; }} @Override void onDestroyView() { super.onDestroyView(); ButterKnife.reset(this); }
实例化控件数组
还可以实例化控件数组,注解多一个s,也就是 Binds
@Binds({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<EditText> nameViews;
解放监听添加
如下,可以直接为 R.id.submit这个控件添加OnClickListener为submit函数。
@OnClick(R.id.submit) public void submit() { // TODO submit data to server... }
多个控件添加同一个响应
还可以批量为多个控件添加为同一个响应函数
@OnClick({ R.id.door1, R.id.door2, R.id.door3 }) public void pickDoor(DoorView door) { if (door.hasPrizeBehind()) { Toast.makeText(this, "You win!", LENGTH_SHORT).show(); } else { Toast.makeText(this, "Try again", LENGTH_SHORT).show(); } }
Zelezny插件介绍
添加方法AndroidStudio->File->Settings->Plugins->搜索Zelezny下载添加就行
使用:
更多相关文章
- android回调实例
- android SharedPreferences 详解与开发实例
- android注解[Jake Wharton Butter Knife]
- Android(安卓)自动化测试经验 - UiScrollable
- android 基础demo例子
- Android(安卓)实现GIF播放(解码)
- Android动态布局
- android ListView本行控件操作本行其它控件的重要方法(绝对原创,本
- Android里面从Dialog中获取返回值并写入指定TextView组件