Butter Knife(黄油刀)的基本使用

原创 2017年05月23日 14:23:23

出自:github,jake大神。附录上github地址 https://github.com/JakeWharton/butterknife

用途的话:绑定视图控件而作用的。

使用准备:

使用android studio

添加依赖,File->Project Structure->Dependencies->Library dependency 搜索butterknife即可

  使用Eclipse

添加jar包,网上都有

注意:1 使用as的可以使用插件,在AndroidStudio->File->Settings->Plugins->搜索Zelezny ,可以自动生成你需要的view对象,方便快捷。使用时,在要导入注解的Activity 或 Fragment 或 ViewHolder的layout资源代码上,右键——>Generate——Generate utterKnife Injections

2 使用ec的需要配置下,不然不会生效,设置方法,请看——>点击打开链接

基本使用

1 绑定view

class ExampleActivity extends Activity {
  @BindView(R.id.title) TextView title;
  @BindView(R.id.subtitle) TextView subtitle;
  @BindView(R.id.footer) TextView footer;

  @Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.simple_activity);
    ButterKnife.bind(this);
    // TODO Use fields...
  }
}

2 绑定资源文件

class ExampleActivity extends Activity {
  @BindString(R.string.title) String title;
  @BindDrawable(R.drawable.graphic) Drawable graphic;
  @BindColor(R.color.red) int red; // int or ColorStateList field
  @BindDimen(R.dimen.spacer) Float spacer; // int (for pixel size) or float (for exact value) field
  // ...
}
3 fragment使用

public class FancyFragment extends Fragment {
  @BindView(R.id.button1) Button button1;
  @BindView(R.id.button2) Button button2;

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fancy_fragment, container, false);
    ButterKnife.bind(this, view);
    // TODO Use fields...
    return view;
  }
}
4 适配器中使用

public class MyAdapter extends BaseAdapter {
  @Override public View getView(int position, View view, ViewGroup parent) {
    ViewHolder holder;
    if (view != null) {
      holder = (ViewHolder) view.getTag();
    } else {
      view = inflater.inflate(R.layout.whatever, parent, false);
      holder = new ViewHolder(view);
      view.setTag(holder);
    }

    holder.name.setText("John Doe");
    // etc...

    return view;
  }

  static class ViewHolder {
    @BindView(R.id.title) TextView name;
    @BindView(R.id.job_title) TextView jobTitle;

    public ViewHolder(View view) {
      ButterKnife.bind(this, view);
    }
  }
}
5 将多个view放进list或数组中

@BindViews({ R.id.first_name, R.id.middle_name, R.id.last_name })
List<EditText> nameViews;
ButterKnife.apply(nameViews, DISABLE);
ButterKnife.apply(nameViews, ENABLED, false);
6 监听事件的绑定,比如这里button的onclick属性,参数可写可不写。也可以限制泛型。

<Button 
android:id="@+id/btn1"
android:layout_marginTop="10px"
android:layout_width="match_parent"
android:layout_height="70px"
android:background="#0F0"
android:onClick="submit"
/>
@OnClick(R.id.btn1)
void submit(){
	//...
}
@OnClick(R.id.submit)
void submit(View view) {
  // TODO submit data to server...
}
7 事件监听,限制泛型

@OnClick(R.id.submit)
public void sayHi(Button button) {
  button.setText("Hello!");
}
8 解绑(一般fragment中用)

  @Override public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
  }
9 如listview的onItemClick方法

  	//原来监听方法,有啥写啥
	@OnItemClick(R.id.listview)
	void onItemClick(AdapterView<?> parent, View view,
			int position, long id) {
			//...
	}
开始对9不是很理解,不知道是写原先回调方法的重载都行,后来发现是写一样的,就是相当于把override下面的方法写下就行。其他也是一样,有多个override就写多个bind

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				
			}
这里注意下,因为不少view是继承textView的,所以如果响应时间没写限制,或者写了高级的类名,可能会同事响应多个view。比如,button 是textview的子类,放写的是textview的类别,可能点击button也会生效

@OnClick({R.id.tv1,R.id.tv2,R.id.btn2,R.id.cb1,R.id.cb2})
void OnClick(TextView view){

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android Butterknife(黄油刀) 使用方法总结

ButterKnife是一个专注于Android系统的View注入框架,以前总是要写很多findViewById来找到View对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeW...
  • donkor_
  • donkor_
  • 2017年09月07日 12:53
  • 2806

Android中ButterKnife(黄油刀)的详细使用

最近刚学会使用ButterKnife,真是超级好用,忍不住要分享给大家了。 写在前面:该文档使用7.0版本,8.0版本方法名有所改动,建议看官方文档,整体业务逻辑和原理没什么变动。 在...
  • SuperDHQ
  • SuperDHQ
  • 2016年09月11日 21:20
  • 15864

【butterknife】butterknife:8.4.0 黄油刀使用详解。

1、Project的build.gradle: dependencies { classpath 'com.android.tools.build:gradle:2.1.3' ...
  • yybj
  • yybj
  • 2016年11月07日 16:48
  • 2545

Android神兵利器之黄油刀(ButterKnife)

黄油刀的使用是非常简单的事情,下载的时候需要注意的有两步:1.下载jar,而下载jar包则有两种方法:A: File->Project Structure->Dependencies->Librar...
  • u010312949
  • u010312949
  • 2016年10月06日 21:09
  • 3503

一把好用的黄油刀——Butter Knife

一把好用的黄油刀——Butter Knife下载JAR包之后需要进行简单的Eclipse配置 Introduction(官方简介,稍后译)Annotate fields with @BindVi...
  • Bizzbee
  • Bizzbee
  • 2016年08月21日 18:25
  • 222

Android Studio 结合 ButterKnife Zelezny 高效使用 Butterknife(黄油刀)

正文: 这里给大家提供一下butterknife的jar包下载,直接copy到libs包下,添加到项目中就好了。点击打开链接 这里我们就按Android studio 的案例来演示一下。 第一...
  • qq_35070105
  • qq_35070105
  • 2017年05月10日 19:51
  • 875

安卓黄油刀的使用

一.将黄油刀加入到框架中1.在项目空间的build.gradle里面buildscript { repositories { jcenter() mavenCe...
  • a254837127
  • a254837127
  • 2017年06月21日 16:27
  • 554

黄油刀

【攻克Android (34)】Butter Knife 黄油刀 博客分类:  攻克Android系列   本文围绕以下四个部分展开:  一、注解式框架  二、Butt...
  • guangyinglanshan
  • guangyinglanshan
  • 2016年08月15日 13:21
  • 1164

ButterKnife(黄油刀)的使用(Eclipse和Android Studio)

首先,来说一下Eclipse中ButterKnife的使用,新建一个Android项目 第一步:下载一个ButterKnife的jar包,将它导入到libs包下,然后右键Build path-->A...
  • ljt2724960661
  • ljt2724960661
  • 2016年11月04日 10:46
  • 1309

Annotation 注解原理 @Butter Knife黄油刀进阶

jdk1.5新特性 注释是给程序员看的,注解是给虚拟机看的 用框架的时候直接用 元注解:5个 注解的注解 @ Retention @ Inherited @Target @ Documen...
  • Alucard6y
  • Alucard6y
  • 2016年09月24日 15:50
  • 488
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Butter Knife(黄油刀)的基本使用
举报原因:
原因补充:

(最多只允许输入30个字)