1、 配置ButterKnife
在项目目录下找到build.gradle配置文件,添加内容如下
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
app目录下中找到build.gradle配置文件(和上边的配置文件不是一个文件),在其中添加如下内容
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.jakewharton:butterknife:8.6.0' apt 'com.jakewharton:butterknife-compiler:8.6.0' compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' }
然后Sync Now同步一下就配置好了。
2、添加ButterKnife插件
找到 File -> Setting -> Plugins,在搜索框中输入“Android ButterKnife Zelezny”,安装该插件后重启Android studio。
3、代码中使用ButterKnife
在onCreate中初始化ButterKnife,然后在需要绑定的成员变量上通过BindView注解就可以绑定控件的ID,之后就可以直接使用该变量操作对应的控件了。(注意:这里在定义变量是不要定义成private或static类型,否则会报错)
public class SplashActivity extends AppCompatActivity { @BindView(R.id.tv_splash_title) TextView tvSplashTitle; @BindView(R.id.btn_splash_click) Button btnSplashClick; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); ButterKnife.bind(this); //这里一定要在SetContentView后添加 tvSplashTitle.setText("该控件已经绑定"); } }
除了可以以View的形式绑定对应的控件,也可以通过其他标签绑定。</p>
4、各种标签
绑定View
@BindView(R.id.tv_splash_title) TextView tvSplashTitle;
绑定事件(各种事件类型,这里只列举了三个)
@OnClick(R.id.btn_splash_click) public void BtnClick() { Toast.makeText(this, "点击事件", Toast.LENGTH_SHORT).show(); }
@OnLongClick(R.id.btn_splash_click) public boolean BtnLongClick() { Toast.makeText(this, "长按事件", Toast.LENGTH_SHORT).show(); return true; } @BindArray(R.array.str1) String[] strings;
@OnClick({R.id.btn1, R.id.btn2, R.id.btn3}) //绑定多个控件的事件 public void onViewClicked(View view) { switch (view.getId()) { case R.id.btn1: Toast.makeText(this, "我是点击事件1", Toast.LENGTH_SHORT).show(); break; case R.id.btn2: Toast.makeText(this, "我是点击事件2", Toast.LENGTH_SHORT).show(); break; case R.id.btn3: Toast.makeText(this, "我是点击事件3", Toast.LENGTH_SHORT).show(); break; } }
绑定资源(各种资源类型等)
@BindString(R.string.app_name) String app_name;
@BindArray(R.array.str1) String[] strings;
@BindBitmap(R.mipmap.ic_launcher) Bitmap bitmap;
@BindColor(R.color.colorAccent) int color;