您当前的位置: 首页 >  android

Kevin-Dev

暂无认证

  • 1浏览

    0关注

    544博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Android -- 开源库】Butter Knife 的基本使用

Kevin-Dev 发布时间:2019-12-06 09:49:27 ,浏览量:1

在这里插入图片描述

简介

ButterKnife 是一个资源绑定框架,它使用注解来进行资源绑定、监听事件绑定的操作,可以帮我们省去findViewById、setXXXListener等繁琐的代码。使用方便,不影响性能(编译时就生成相应文件),提高开发效率。

配置

1. 在 app/build.gradle 中添加如下:

    //Butter Knife
    implementation 'com.jakewharton:butterknife:10.2.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.0'

2. 在 project/build.gradle 中添加 classpath 如下:

    classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.0'
三、使用

1. 设置资源绑定

  • 使用@BindView( )绑定单个视图
@BindView(R.id.rv_collect)
RecyclerView mRvCollect;
  • 使用@BindViews( )绑定一组视图
@BindViews({ R2.id.tv_name, R2.id.tv_age,  R2.id.tv_introduce })  
List buttonList ;  
  • 使用@BindString( )绑定单个字符串资源
@BindString(R.string.tip)
String tip;
  • 使用@BindArray( )绑定一组字符串资源
@BindArray(R.array.tips)
String[] tips ;
  • 绑定颜色值 @BindColor( )
@BindColor(R.color.theme)
int themeColor;
  • 绑定图片 @BindBitmap( )
@BindBitmap(R.mipmap.ic_launcher)
Bitmap appLogo ;

2. 设置监听绑定

  • 点击事件 @OnClick( )
@OnClick(R.id.btn1)  
public void show1(){  
    Toast.makeText(this, "onClick", Toast.LENGTH_SHORT).show();  
} 
  • 长按事件 @OnLongClick( )
@OnLongClick(R.id.btn2)  
public void show2(){  
    Toast.makeText(this, "onLongClick", Toast.LENGTH_SHORT).show();  
} 
  • 多个控件绑定一个事件
@OnClick( {R.id.btn1, R.id.btn2, R.id.btn3, R.id.btn4} )  
public void onViewClicked(View view) {  
    switch (view.getId()) {  
        case R.id.btn1:  
            Toast.makeText(this, "onclick1", Toast.LENGTH_SHORT).show();  
            break;  
        case R.id.btn2:  
            Toast.makeText(this, "onclick2", Toast.LENGTH_SHORT).show();  
            break;  
        case R.id.btn3:  
            Toast.makeText(this, "onclick3", Toast.LENGTH_SHORT).show();  
            break;  
        case R.id.btn4:  
            Toast.makeText(this, "onclick4", Toast.LENGTH_SHORT).show();   
            break;  
    }  
}  
开启绑定

需要通过 ButterKnife.bind() 方法开启绑定,调用该方法后,对应的资源和监听事件就会开始进行注入绑定。

1. 在Activity中开启绑定

@Override  
protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  
    //在setContentView后调用
    ButterKnife.bind(this);  
}  

2. 在Fragment中开启绑定

private Unbinder unbinder; 
 
@Override  
public View onCreateView(LayoutInflater inflater, ViewGroup container,  
                         Bundle savedInstanceState) {  
    View view = inflater.inflate(R.layout.fragment, container, false);  
    
    //返回Unbinder值用于解绑
    //这里调用的方法与Activity调用的有区别  
    unbinder = ButterKnife.bind(this, view);  
    return view;  
}  

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

3. 在ViewHolder中开启绑定

static class ViewHolder {
    @BindView(R.id.title) TextView name;
    @BindView(R.id.job_title) TextView jobTitle;
 
    public ViewHolder(View view) {
      ButterKnife.bind(this, view);
    }
  }
混淆

在 proguard-rules.pro 文件中添加以下内容进行混淆配置 ** 代码混淆**

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

zelezny插件可以快速自动生成ButterKnife绑定相关的代码。

  1. 先通过Android Studio —> Setting—> Plugins —> Browse Responsitories —> 搜索zelezny并下载,下载后请重启Android Studio。

在这里插入图片描述

  1. 右键R.layout.xxxx,点击Generate—>Generate ButterKnife Injections,选择目标View,即可生成相应的代码。

在这里插入图片描述 在这里插入图片描述

关注
打赏
1658837700
查看更多评论
立即登录/注册

微信扫码登录

0.0380s