在网上找登录界面的样例的时候,发现有人使用了Butterknife的工具,稍微了解了一下,它的用法还是比较简单的。主要可以减少很多FindViewById();的代码量。
环境配置
因为我们只需要最简单的注解findViewById的功能,因此只需要ButterKnife的7.0.1版本。8.0以上的版本配置与本版本不同,需要注意。
7.0
在Android studio 2.3.3中,直接在项目的build.gradle(Moudle:app)文件的dependencies中加入
compile 'com.jakewharton:butterknife:7.0.1'
即可。
8.0+
在Android studio 2.3.3中,build.gradle(Moudle:project)文件中的dipendencies加入
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
例如
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.2'
classpath
//请看这里 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
然后,在build.gradle(Moudle:app)文件的开头添加
apply plugin: 'android-apt'
在dependencies中添加(以8.4.0为例)
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
使用
注解控件id
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Button;
//7.0.1
import butterknife.Bind;
import butterknife.ButterKnife;
//8.0+
import butterknife.BindView;
import butterknife.ButterKnife;
public class ButterknifeActivity extends AppCompatActivity {
//7.0.1
@Bind( R.id.button1 ) Button button1 ;
//8.0+
@BindView( R.id.button1 ) Button button1 ;
// 注意:button 的修饰类型不能是:private 或者 static 。 否则会报错:错误: @BindView fields must not be private or static. (com.zyj.wifi.ButterknifeActivity.button1)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_butterknife);
//绑定activity
ButterKnife.bind( this ) ;
button1.setText( "I am a button ");
}
}