美文网首页
Android快速开发框架ButterKnife 8.2.1使用

Android快速开发框架ButterKnife 8.2.1使用

作者: HH大雄 | 来源:发表于2016-08-07 13:40 被阅读0次

    一、配置gradle

    1、现在根目录下的build.gradle里面声明编译插件

    buildscript {

            repositories {

                  jcenter()

            }

            dependencies {

                 classpath 'com.android.tools.build:gradle:2.0.0'

                 classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

             }

    }

    2、在module目录下的build.gradle中声明

    apply plugin: 'android-apt'

    dependencies {

             compile 'com.jakewharton:butterknife:8.2.1'

             apt 'com.jakewharton:butterknife-compiler:8.2.1'

    }

    二、基础使用

    上面已经配置好了gradle,接下来我们就可以使用他了,好,下面先贴如何使用的代码:

    public class MainActivity extends AppCompatActivity {

           @BindView(R.id.tv_show)

           TextViewtv_show;

          @Override

           protected void onCreate(Bundle savedInstanceState) {

                   super.onCreate(savedInstanceState);

                   setContentView(R.layout.activity_main);

                   ButterKnife.bind(this);

                    tv_show.setText("hello, I had bind by BindView, ok");

           }

          @OnClick(R.id.tv_show)

          public voidshowOnClick(){

              Toast.makeText(this,"bind by OnClick",Toast.LENGTH_SHORT).show();

          }

    @OnClick({R.id.tv_add,R.id.tv_delete})

    public voidclickView(View view){

          switch(view.getId()){

            caseR.id.tv_add:

                  Toast.makeText(this,"tv_add",Toast.LENGTH_SHORT).show();

                  break;

             caseR.id.tv_delete:

                   Toast.makeText(this,"tv_delete",Toast.LENGTH_SHORT).show();

                   break;

            }

       }

    }

    优点:

    1、再也不用findViewById啦

    第一步:@BindView(R.id.tv_show)

    TextView tv_show;

    第二步:在onCreate中,声明:

    ButterKnife.bind(this);

    经过上面两步,就已经初始化tv_show对象了,可以直接使用

    2、再也不用setOnClickListener啦

    如上面所示,对于任何一个View可以:

    @OnClick(R.id.tv_show)

    public void showOnClick(){

    Toast.makeText(this,"bind by OnClick", Toast.LENGTH_SHORT).show();

    }

    只要声明点击对象的ID即可,这样对应id的组件就有了点击事件

    3、可以批量设置点击事件啦,按以下步骤做即可:

    @OnClick({R.id.tv_add,R.id.tv_delete})

    public void clickView(View view){

         switch (view.getId()){

                  case R.id.tv_add:

                       Toast.makeText(this,"tv_add", Toast.LENGTH_SHORT).show();

                       break;

                 case R.id.tv_delete:

                       Toast.makeText(this,"tv_delete", Toast.LENGTH_SHORT).show();

                       break;

             }

       }

    }

    4、可以将多个View放在一个列表或数组

    @BindViews({R.id.tv_add,R.id.tv_update})

    ListallViews;

    需要注意的地方:

    1、使用butterKnife的域或者方法不能用private、static修饰

    2、在fragment中使用和Activity中使用只有一点不同。如下所示:

    public class MyFragment extends Fragment {

           @BindView(R.id.tv_fragment)

           TextViewtv_fragment;

           @Override

          public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {

                 View view=inflater.inflate(R.layout.fragment_test,container,false);

                 ButterKnife.bind(this,view);

                 return view;

          }

    }

    相关文章

      网友评论

          本文标题:Android快速开发框架ButterKnife 8.2.1使用

          本文链接:https://www.haomeiwen.com/subject/fxjlsttx.html