Android ButterKnife 使用方法总结_第1张图片

ButterKnife Introduction(介绍)


ButterKnife 是一个专注于Android系统的View注入框架,可视化一键生成。

  • 官网:http://jakewharton.github.io/butterknife/

  • GitHub:https://github.com/JakeWharton/butterknife/

英:

  1. Eliminate findViewById calls by using @BindView on fields.
  2. Group multiple views in a list or array. Operate on all of them at once with actions, setters, or properties.
  3. Eliminate anonymous inner-classes for listeners by annotating methods with @OnClick and others.
  4. Eliminate resource lookups by using resource annotations on fields.

译:

  1. 使用@BindView 来代替findViewById 完成View的引用。
  2. 将多个View组合成list或者array,使用actions,setters或者属性来同时操作它们。
  3. 使用@OnClick等注解字段来注解方法,从而来代替监听器中的匿名内部类。
  4. 使用@BindString等注解字段来注解字段,从而来代替Context.getString等获取资源的方式。

How to build (如何够贱):


Project build.gradle 添加:

dependencies {    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'    classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'}

分支 module build.gradle 添加:(如果只有主项目可忽略)

apply plugin: 'com.jakewharton.butterknife'dependencies {    annotationProcessor "com.jakewharton:butterknife-compiler:8.4.0"}

分支 lib_common build.gradle 添加:

apply plugin: 'com.jakewharton.butterknife'dependencies {    compile "com.jakewharton:butterknife:8.4.0"    annotationProcessor "com.jakewharton:butterknife-compiler:8.4.0"}

How to use it (如何使用):


activity使用:

import butterknife.ButterKnife;import butterknife.Unbinder;public abstract class BaseActivity extends AppCompatActivity {    // Unbinder    private Unbinder unbind;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // setView        setContentView(R.layout.main);        // ButterKnife        unbind = ButterKnife.bind(this);    }    @Override    protected void onDestroy() {        super.onDestroy();        unbind.unbind();    }}

Fragment使用:

import butterknife.ButterKnife;import butterknife.Unbinder;public abstract class BaseFragment extends Fragment {    protected View rootView;    private Unbinder unbind;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        if (rootView == null) {            rootView = inflater.inflate(this.getLayoutResource(), container, false);        }        unbind = ButterKnife.bind(this, rootView);        return rootView;    }    //获取布局文件    protected abstract int getLayoutResource();    @Override    public void onDestroyView() {        super.onDestroyView();        unbind.unbind();    }}

Adaper使用:

import butterknife.ButterKnife;public class MyAdapter extends BaseAdapter {    @Override    public View getView(int position, View view, ViewGroup parent) {        ViewHolder holder;        if (view != null) {            holder = (ViewHolder) view.getTag();        } else {            view = inflater.inflate(R.layout.item, parent, false);            holder = new ViewHolder(view);            view.setTag(holder);        }        holder.name.setText("hello");        return view;    }    static class ViewHolder {        @BindView(R.id.name)        TextView name;        public ViewHolder(View view) {            ButterKnife.bind(view);        }    }}

Butterknife常用的注解:

Butterknife支持Activity,Fragment,View,Dialog,ViewHolder类内部的View绑定// 绑定View,避免findViewById,也可以用在ViewHolder里,必须是public@BindView(R2.id.textview)  TextView mTextView; // 绑定多个view,只能用List不能用ArrayList@BindViews({ R2.id.button1, R2.id.button2,  R2.id.button3})  List

ButterKnife Zelezny插件(自动生成代码)


How to install (如何安装)

  • in Android Studio:FileSettingsPluginsBrowse repositories→搜索Android ButterKnife ZeleznyInstallRestart Android Studio(安装后重启生效)

  • download ButterKnife:FileSettingsPluginsInstall plugin from disk(安装后重启生效)

How to use it (如何使用):

zelezny_animated.gif

 

  1. Make sure you have latest Butterknife lib on your classpath
  2. Right click on usage of desired layout reference (e.g. R.layout.main in your Activity or Fragment), then Generate and Generate ButterKnife Injections
  3. Pick injections you want, you also have an option to create ViewHolder for adapters.
  4. Click Confirm and enjoy injections in your code with no work!

ButterKnife 代码混淆:


-keep class butterknife.** { *; }  -dontwarn butterknife.internal.**  -keep class **$$ViewBinder { *; }    -keepclasseswithmembernames class * {      @butterknife.* ;  }    -keepclasseswithmembernames class * {      @butterknife.* ;  }

 

更多相关文章

  1. android 检测sqlite数据表和表中字段(列)是否存在 (转)
  2. [Android]ButterKnife-无尽之刃-绑定视图控件和事件的快速开发工
  3. Android support-annotations 注解使用详解
  4. android 数据双向绑定学习笔记
  5. 一个编译时注解的 RxBus 库 - Apollo
  6. 在 Android 使用 Support Annotations 注解优化代码
  7. Android -- 跨应用绑定service(AIDL)

随机推荐

  1. mysql在项目中怎么选事务隔离级别
  2. .Net Core导入千万级数据至Mysql的步骤
  3. MySQL大小写敏感的注意事项
  4. MySQL 使用事件(Events)完成计划任务
  5. MySQL触发器的使用
  6. Oracle更换为MySQL遇到的问题及解决
  7. MySQL 重命名表的操作方法及注意事项
  8. Mysql官方性能测试工具mysqlslap的使用简
  9. MySQL官方导出工具mysqlpump的使用
  10. 新手必备之MySQL msi版本下载安装图文详