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;
-
使用@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长按事件
-
关于资源的绑定