Butter knife 最新版本8.0.1 解析

第一步:添加依赖:

 
 
buildscript {
  repositories {
    mavenCentral()
   }
  dependencies {
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  }
}

apply plugin: 'com.neenbedankt.android-apt'

dependencies {
  compile 'com.jakewharton:butterknife:8.0.1'
  apt 'com.jakewharton:butterknife-compiler:8.0.1'
}

第二步:尝试

@BindView 替代findViewById

@OnClick 替代onClickListener


package com.xuan.butterknife;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.tv_0)
    TextView tv_0;

    @BindView(R.id.bt_0)
    Button bt_0;


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

        ButterKnife.bind(this);

        tv_0.setText("data:");
    }

    @OnClick(R.id.bt_0)
    public void taost(View v) {
        Toast.makeText(this, "view:" + v, Toast.LENGTH_SHORT).show();
    }

}
</pre><pre code_snippet_id="1666789" snippet_file_name="blog_20160429_3_751271" name="code" class="java"><pre name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:showIn="@layout/activity_main">

    <TextView
        android:id="@+id/tv_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />

    <Button
        android:id="@+id/bt_0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="button" />
</LinearLayout>


 
 

效果:

Butter knife 最新版本8.0.1 解析_第1张图片

扩展:可以一次性获取多个view,

@BindViews({R.id.bt_1,R.id.bt_2,R.id.bt_3})
List<Button> buttons;

一次性设置多个view的点击事件:

@OnClick({R.id.bt_1, R.id.bt_2, R.id.bt_3})
public void buttonClick(View v) {
    Toast.makeText(this, "view:" + v, Toast.LENGTH_SHORT).show();
}
 
 
获取资源文件数据:
@BindString(R.string.app_name)
String appName;

ButterKnife有很多注解:红色常用,这里不一一演示了

Butter knife 最新版本8.0.1 解析_第2张图片


butterKnife有一个比较有意思的功能action  可以批量操作view

@BindViews({R.id.bt_1, R.id.bt_2, R.id.bt_3})
List<Button> buttons;

static final ButterKnife.Action<Button> disable=new ButterKnife.Action<Button>() {
    @Override
    public void apply(@NonNull Button view, int index) {
        view.setEnabled(false);
    }
};
static final ButterKnife.Action<Button> enable=new ButterKnife.Action<Button>() {
    @Override
    public void apply(@NonNull Button view, int index) {
        view.setEnabled(true);
    }
};

用法;

 ButterKnife.apply(buttons,disable);
// ButterKnife.apply(buttons,enable);

这样就可以批量使这些button 可以点击和不可点击

当然 ButterKnife的apply方法有大量重载形式:

Butter knife 最新版本8.0.1 解析_第3张图片


如:

ButterKnife.apply(tv_0,View.ALPHA,0.0f);
 
 
改变某个view的透明度 
 
 
ButterKnife 还有很多方法 欢迎尝试
Butter knife 最新版本8.0.1 解析_第4张图片
 
 

你可能感兴趣的:(Butter knife 最新版本8.0.1 解析)