当前位置: 安卓之星 -> 安卓开发 -> Butterknife 8.5.1使用-全面总结

Butterknife 8.5.1使用-全面总结

作者:网络 发表于: 2017-04-03 点击: 1,323 次

GitHub项目源码 https://github.com/JakeWharton/butterknife 
官网 http://jakewharton.github.io/butterknife/

ButterKnife 简介

ButterKnife是一个专注于Android系统的View注入框架,可以减少大量的findViewById以及setOnClickListener代码,可视化一键生成。

ButterKnife 优势

1、强大的View绑定和Click事件处理功能,简化代码,提升开发效率 
2、方便的处理Adapter里的ViewHolder绑定问题 
3、运行时不会影响APP效率,使用配置方便 
4、代码清晰,可读性强

使用心得:
1.Activity ButterKnife.bind(this);必须在setContentView();之后,且父类bind绑定后,子类不需要再bind 
2.Fragment ButterKnife.bind(this, mRootView); 
3.属性布局不能用private or static 修饰,否则会报错 
4.setContentView()不能通过注解实现。(其他的有些注解框架可以)

如何添加依赖

在项目的project 的build.gredle 文件中的dependencies标签下添加。

buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
  }
}

在module的build.gredle 文件中添加
apply plugin: ‘com.jakewharton.butterknife’
在module的build.gredle 文件中的dependencies标签中添加

dependencies { 

   compile ‘com.jakewharton:butterknife:8.5.1’ 

   annotationProcessor ‘com.jakewharton:butterknife-compiler:8.5.1’

}

不过使用时,只要加dependencies就可以使用了

如何使用

常见使用方法:

1)由于每次都要在Activity中的onCreate绑定Activity,所以个人建议写一个BaseActivity完成绑定,子类继承即可 
注:ButterKnife.bind(this);绑定Activity 必须在setContentView之后: 
实现如下(FragmentActivity 实现一样):

public abstract class BaseActivity extends Activity {  
    public abstract int getContentViewId();  
      Unbinder bind;
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(getContentViewId());  
        bind=  ButterKnife.bind(this);  
        initAllMembersView(savedInstanceState);  
    }  

    protected abstract void initAllMembersView(Bundle savedInstanceState);  

    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
            bind.unbind();//解除绑定
    }  
}

2)绑定fragment

public class ButterknifeFragment extends Fragment {

    @BindView( R.id.button1 )
    public Button button1 ;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_butterknife, container, false);

        //绑定fragment
        ButterKnife.bind( this , view ) ;
        button1.setText( "I am a button ");
        return view ;
    }
}

相关文章

相关文章

赶快留言冒泡

  • 评论 (0)
  • 引用通告 (0)
目前还没有任何评论.
目前还没有任何Trackbacks和Pingbacks.
吐个泡浮上去.