ButterKnife注解框架的使用

一、ButterKnife简介

        ButterKnife是注解中相对简单易懂的开源框架,ButterKnife是控件注入框架,旨在帮助安卓开发者省去初始化控件的重复性工作,简单快捷地初始化布局文件中的控件,极大地提升开发效率。

        主要优点如下;

        1.强大的View绑定和Click事件处理功能,简化代码,提升开发效率。

        2.方便的处理Adapter里的ViewHolder绑定问题

        3.运行时不会影响APP效率,使用配置方便

        4.代码清晰,可读性强

    下载地址:https://github.com/JakeWharton/butterknife

二、使用步骤

        1.在Setting->Plugins中输入butterknife添加插件

        2.Android ButterKnife Aelezny ->点击安装

        3.    下project的build.gradle里面添加

         classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        在Module里的build.gradle里面添加
        compile 'com.jakewharton:butterknife:8.0.1'
        apt 'com.jakewharton:butterknife-compiler:8.0.1'

        4.省略findViewById()使用

            1)在Activity中使用

            先设置好布局之后调用:ButterKnife.inject(this);

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

         自动导入注解,即可获取到控件对象。

             @InjectView(R.id.tv_text)
             TextView tvText;
            值得注意的是, 在View变量声明的时候不能为private或者static。

              2)在Fragment中使用

                先设置布局之后调用如下代码;             

        View view = inflater.inflate(R.layout.fragment, container, false);
        ButterKnife.inject(this, view);      

               自动导入注解,即可获取到控件对象。

             @InjectView(R.id.tv_text)
             TextView tvText;

             3)Adapter ViewHolder中使用

        static class ViewHolder {
                @InjectView(R.id.tv_text)
                TextView tvText;
 
                public ViewHolder(View view) {
                    ButterKnife.inject(this, view);
                }
            }

        5.省略setOnClickListener()的使用

                1)普通的onClickListener()中

            @OnClick(R.id.btn_button)
            void finishA(View view) {
                finish();
            }
         值得注意的是: 这里方法仍然不能是private和static, 并且可以有一个参数View,也可不写。

                2)ListView的OnItemClick

@OnItemSelected(R.id.list_view)
void onItemSelected(int position) { 
}
或者也可以使用
@OnItemSelected(value = R.id.maybe_missing, callback = NOTHING_SELECTED)
void onNothingSelected() {
  
}


                3)CheckBox的OnCheckedChanged

        

//checkBox radioButton状态改变监听
@OnCheckedChanged({R.id.cb1, R.id.cb2})
    void checkChange(CompoundButton buttonView, boolean isChecked) {
        switch (buttonView.getId()) {
            case R.id.cb1:
                if (isChecked) {
                    //dosomething
                }
                break;
            case R.id.cb2:
                if (isChecked) {
                    //dosomething
                }
                break;
        }
    }


        4)可以一次指定多个id,为多个View绑定一个事件处理方法

            @OnClick({R.id.button_1, R.id.button_2, R.id.button_3, R.id.button_4})
            void editViewsClicked() {
                Toast.makeText(this, "You click the Button!", Toast.LENGTH_SHORT).show();
            } 

        5)Resource 资源的绑定

class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
 
}

      看到此,是不是接的ButterKnife的简单使用是不是很简单,谢谢浏览!

更详细的说明可以查阅官方文档:http://jakewharton.github.io/butterknife/

猜你喜欢

转载自blog.csdn.net/qq_35460159/article/details/80192440