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下载添加就行
使用:

更多相关文章

  1. android回调实例
  2. android SharedPreferences 详解与开发实例
  3. android注解[Jake Wharton Butter Knife]
  4. Android(安卓)自动化测试经验 - UiScrollable
  5. android 基础demo例子
  6. Android(安卓)实现GIF播放(解码)
  7. Android动态布局
  8. android ListView本行控件操作本行其它控件的重要方法(绝对原创,本
  9. Android里面从Dialog中获取返回值并写入指定TextView组件

随机推荐

  1. Android 在一个应用中如何启动另外一个已
  2. Android(安卓)Gems — Fragment本质之Vie
  3. Android的低级错误
  4. Android使用贝塞尔线高仿QQ聊天消息气泡
  5. android软件音量控制
  6. 如何在android画分析图(例如 柱状图、趋势
  7. Android项目导出jar包的小技巧
  8. Windows平台下如何使用Android(安卓)NDK
  9. Android开机自启APK应用
  10. [Android]Android 颜色大全 colors.xml