我的butternife

1.butternife的使用


下载地址:地址:https://github.com/JakeWharton/butterknife

2.引入到自己的项目中

在Project的build.gradle文件中添加如下代码
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.0'
        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
    }
}
在app模块下的build.gradle文件中添加如下声明
apply plugin: 'com.neenbedankt.android-apt'

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.android.support:appcompat-v7:25.0.1'
    testCompile 'junit:junit:4.12'
    compile 'com.jakewharton:butterknife:8.4.0'
    apt 'com.jakewharton:butterknife-compiler:8.4.0'
}

在Activity中初始化
ButterKnife.bind(this);

3.相关的注解的说明

bindView(R.id.控件的id)
BindBool 绑定boll值 @BindBool(R.bool.close) boolean close;
bindArray 绑定字符串数组资源@BindArray(R.array.strs) String[] resource;

bindString 绑定单个字符串

bindDrawable 绑定图片

bindColor 绑定一个颜色

bindBitmap 绑定drawbale

4.事件相关的注解的说明

@Onclick点击事件
@OnLongclick 长按事件
@onPageChange viewpage 的页面监听事件


    @OnPageChange(value = R.id.vp)
    public void onChangeSelect(int position){
        System.out.println("position="+position);
    }

    @OnPageChange(value = R.id.vp,callback = OnPageChange.Callback.PAGE_SCROLL_STATE_CHANGED)
    public void onPageScrollStateChanged(int state) {
        System.out.println(state);
    }

    @OnPageChange(value = R.id.vp,callback = OnPageChange.Callback.PAGE_SCROLLED)
    public void onPageScroll(int position,float positionOffset,int positionOffsetPixels) {
        System.out.println("positionOffsetPixels:"+positionOffsetPixels);
    }

5.butternife在fragment中的使用


public class UserInFragment extends Fragment {

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

    @BindBool(R.bool.close) boolean close;

    @BindArray(R.array.strs) String[] resource;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.lay1,container,false);
        ButterKnife.bind(this,view);
        return view;
    }

    @OnClick(R.id.btn)
    public void onClick(View view){
        System.out.println("btn被点击了");
        System.out.println(resource);
    }

}

  •  使用@BindViews初始化多个View

  • 
    
    1 @BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
    2 List nameViews;
    View Code
    
    
  •  使用@OnClick设置监听事件

  •  1 @OnClick(R.id.submit)
     2 public void submit(View view) {
     3 
     4 }
     5 
     6 //如果不想要submit方法参数可以去掉如:
     7 @OnClick(R.id.submit)
     8 public void submit() {
     9 // TODO do something…
    10 }
    11 
    12 //View的参数还可以自动转换,比如给TextView设置点击事件
    13 @OnClick(R.id.submit)
    14 public void submit(TextView textView) {
    15 }
    16 
    17 如果是自定义的View可以不指定View Id 如:
    18 public class FancyButton extends Button {
    19 @OnClick
    20 public void onClick() {
    21 
    22 }
    23 }
  • listView item点击事件

  • view的onTouchEvent

  • 监听EditText的addTextChangedListener

  • 设置ViewPager的OnPageChangeListener

  • 设置TextView的OnEditorActionListener(该事件主要用来设置软键盘上的按钮)

  • 设置View的OnFocusChangeListener事件

  • 设置View的OnLongClickListener长按事件

  • 关于资源的绑定

原文地址:https://www.cnblogs.com/uf0-java/p/6187511.html