【Android 从入门到放弃】 ButterKnife 使用

概述

ButterKnife,中文称为黄油刀。为Android 视图提供绑定字段和方法。 简单的说,ButterKnife可以帮我们完成控件的初始化和点击监听等繁琐性工作。目前最新版是8.7.0。

最新版的ButterKnife用了Java Annotation Processing技术,也就是说在Java代码编译成Java字节码的时候就已经处理了@Bind、@OnClick这些注解了,不会影响程序的运行效率。

相关资源地址:

  • Introduction:
    http://jakewharton.github.io/butterknife/
  • Java Doc:
    http://jakewharton.github.io/butterknife/javadoc/
  • github:
    https://github.com/JakeWharton/butterknife

前期准备工作

1. 导入 ButterKnife 依赖
在app Module的build.gradle文件中Dependencies增加下面两句

compile 'com.jakewharton:butterknife:8.7.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0'

2. 集成 ButterKnife Zelezny 插件
打开 File → Settings → Plugins → Browse repositories搜索“插件名”。该插件可以帮助开发者快速使用ButterKnife 的功能。

【Android 从入门到放弃】 ButterKnife 使用_第1张图片
step1

【Android 从入门到放弃】 ButterKnife 使用_第2张图片
step2
【Android 从入门到放弃】 ButterKnife 使用_第3张图片
step3

小试牛刀

只要右键布局id上,选择Generate,点击Generate Butterknife Injections,该插件会从对应的布局中查找有id属性的View,然后会出现在对应的选择页面。点击Confirm即可。


【Android 从入门到放弃】 ButterKnife 使用_第4张图片
使用示例

适用场景

1. Activity
使用ButterKnife Zelezny 插件可以自动绑定。界面销毁后如果想解绑,可以手动设置如下。不过,官方文档没有明确说明是否需要手动解绑,欢迎大侠来拍砖。

Unbinder unbinder = ButterKnife.bind(this);
unbinder.unbind();

2. Fragment
在Fragment中,使用ButterKnife Zelezny 插件可以自动绑定和解绑。

Unbinder unbinder;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_first, container, false);
    unbinder = ButterKnife.bind(this, view);
    return view;
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
}

3. Adapter
在Adapter中,使用ButterKnife Zelezny 插件可以自动生成ViewHolder

绑定资源

  1. ButterKnife Zelezny 插件可以实现绑定id和onClick事件,这也是 ButterKnife 最好用的功能。
  2. 除了ButterKnife Zelezny 插件绑定的功能外,其实 ButterKnife 还可以绑定控件数组/集合,字符串或者图片资源,以及各种类型的事件。但是由于不能通过ButterKnife Zelezny 插件自动生成,所以这些功能完全可以通过android api实现。

代码混淆

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

【Android 从入门到放弃】 ButterKnife 使用_第5张图片
点滴分享 共同进步

你可能感兴趣的:(【Android 从入门到放弃】 ButterKnife 使用)