AndroidStudio中ButterKnife 的配置和使用

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;

猜你喜欢

转载自blog.csdn.net/a499957739/article/details/80115390