笔记:ButterKnife使用(一)
2016-11-24 10:34
162 查看
一、 基本配置
Butterknife的github开源地址:https://github.com/JakeWharton/butterknifeButterknife官网地址:http://jakewharton.github.io/butterknife/
1、配置Annotation Processing Tool(android-apt):
在build.gradle(project)中添加如下配置:buildscript{ repositories{ jcenter() } dependencies{ classpath ‘com.android.tools.build:gradle:2.1.0’ classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } }
注意:首先要配置Project查看模式下:gradle->build.gradle文件,Annotation Processing Tool版本最少也要1.0以上,因为Butterknife框架是使用apt技术,所以没配置该文件会直接导致编译不通过
2、添加依赖关系
Build.gradle(app)中添加如下依赖:Dependencies{ Compile fileTree(dir:’lib’,include:[‘*.jar’]) testCompile ‘junit:junit:4.12’ compile ‘com.android.support:appcompat-v7:23:3.0’ /*butterknife—依赖*/ compile ‘com.jakewharton:buttonknife:8.2.1’ apt ‘com.jakewharton:butterknife-compiler:8.2.1’ }
最后在build.gradle(app)顶部添加如下依赖(必须添加,否则编译通不过):
apply plugin: 'android-apt'
3、Android ButterKnife Zelezny插件的使用
在android-studio中点“File”–>“Settings”–>“Plugins” –>“在搜索框中输入ButterKnife”就会显示Android ButterKnife Zelezny插件的信息,根据提示,点击进行安装。安装好该插件并配置好如上环境之后,就可以在Android Studio中很方便的使用ButterKnife了。
1、 先在Activity对应的布局文件中,定义好控件,并设置对应的ID,然后回到Activity,将光标移动到setContentView(R.layout.xxx)方法中的布局文件(xxx)上,按快捷键Alt+insert,就会看到如下菜单:
2、点击“Generage Butterknife Injections”则弹出如下窗口:
可以选择添加控件和绑定点击事件,选好要绑定的控件和事件之后点击确定即可。
二、 基本使用
1、简单使用:
@BindView的基本使用,绑定(BindView)单个基本控件,
@BindView(R.id.tv_test1) TextView mTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this);//绑定 mTextView.setText("test");//这样就可以直接使用该TextView }
以上是绑定单个控件的,下面为绑定多个控件的情况
绑定多个基本控件到List中:
@Bind({ R.id.first_name, R.id.middle_name, R.id.last_name }) List<EditText> nameViews; (通过List绑定多个控件)
2、绑定资源
@BindString(R.string.app_name) String appName;//sting @BindColor(R.color.red) int textColor;//颜色 @BindDrawable(R.mipmap.ic_launcher) Drawable drawable;//drawble @Bind(R.id.imageview) ImageView mImageView; @Bind(R.id.checkbox) CheckBox mCheckBox; @BindDrawable(R.drawable.selector_image) Drawable selector;
3、绑定事件
绑定单个控件@OnClick(R.id.title) public void onClick() { title.setText("这个是标题"); //…… }
绑定多个控件
@OnClick({R.id.title, R.id.activity_main}) public void onClick(View view) { switch (view.getId()) { case R.id.title: break; case R.id.activity_main: break; } }
绑定选项点击事件
@OnItemClick(R.id.list) void onItemClick(int position) { Log.e("hm", "点击了" + position); }
4、include layout可通过View找到里面的子View
@BindView(R.id.in_includeView) View mView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); TextView textView = ButterKnife.findById(mView, R.id.tv_data); textView.setText("这是从引入的View里面的找到的TextView "); }
5、在fragment上的使用
@BindView(R.id.lv_data)ListView mListView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { ButterKnife.bind(getActivity()); return inflater.inflate(R.layout.fragment_layout, container, false); }
可以看出,在Fragment中的使用和在Activity中的使用基本相似,但是在Fragment中需要在onDestoryView()方法中解绑,如下:
public void onDestroyView() { super.onDestroyView(); ButterKnife.unbind(this);//解绑 }
6、Adapter可以简化传统的getview方法,使其简洁化
在adapter中的使用方法有两种,分别如下:1、通过ButterView.findById(R.id.xxx)方法
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { viewHolder = new ViewHolder(); convertView=LayoutInflater.from(activity).inflate(R.layout.item_layout, null); //通过ButterKnife找到该view viewHolder.textView = ButterKnife.findById(convertView, R.id.lv_data); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.textView.setText(data.get(position).toString()); return convertView; } static class ViewHolder { TextView textView; }
2、通过ButterKnife.bind(this, view)方法
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = getLayoutInflater().inflate(R.layout.edu_theme_item, null); viewHolder = new ViewHolder(convertView); convertView.setTag(viewHolder); }else{ viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.themeContent.setText(list.get(position).getContent()); return convertView; } class ViewHolder { @Bind(R.id.theme_content) TextView themeContent; ViewHolder(View view){ ButterKnife.bind(this, view); } }
由于ButterKnife是一个非常优秀的框架,所以在此做一个笔记以方便使用,下面是本人在学习的时候看过的几篇比较可以的博客,也记录下来方便反复查看学习。ButterKnife还有一些比较好用的功能,如apply,action、setter等,这些也正在研究中,等学好了,会用了再来总结一次,butterknife的功能也就差不多了。
参考博客:
(1) http://www.jianshu.com/p/fa0a03bfbf6e
(2) http://blog.csdn.net/u014038534/article/details/52647703
(3) http://blog.csdn.net/itjianghuxiaoxiong/article/details/50177549
相关文章推荐
- Android笔记:Android Butterknife 8.4.0 使用方法总结
- ButterKnife 的使用
- 使用ButterKnife完成Adapter
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
- Android 注解框架 Butterknife的核心代码分析笔记
- Butter Knife的配置和使用
- androidstudio Butterknife-7.0.1的配置使用
- 简单的butterknife使用方法
- Android Studio中ButterKnife插件的安装与使用
- Android Studio中 Android butterKnife Zelezny和 Android Parcelable code generator的使用(备忘录)
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- Android开发之注解式框架ButterKnife的使用
- ButterKnife使用小结
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!,androideclipseadt 一、起因 想必使用And
- ButterKnife使用
- 在Eclipse或者ADT中使用ButterKnifeZelezny,Android组件初始化从此变得简单易懂!!!!
- android studio Butter Knife按钮事件注入的使用设置
- Android快速开发工具ButterKnife Zelezny注解框架使用教程
- ButterKnife注解框架使用