ButterKnife注解框架使用
来源:互联网 发布:java开源考试系统 编辑:程序博客网 时间:2024/05/16 02:01
Butter Knife
Field and method binding for Android views
Butter Knife采用annotation(注解)的方式帮你去绑定变量。而不是采用findViewById的方式.
举个简单例
第一步:下载ButterKnife开发包,下载地址如下:
下载地址
第二步:配置开发工具,我暂时用的是eclipse,将下载的ButterKnife开发包放到工程的libs下面
配置Annotation Processing,这里配置是导入实现了AbstractProcessor接口的包,编译的时候自动执行该接口下的process(),一般在次函数做一些注解解释操作。
add jars将libs下的butterKnife.jar包加进去
第三步:编程实现
activity_main.xml
<RelativeLayout 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" tools:context="com.csm.butterknife.MainActivity" > <TextView android:id="@+id/tv_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" /></RelativeLayout>
MainActivity
package com.csm.butterknife;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;import android.widget.Toast;import butterknife.Bind;import butterknife.ButterKnife;import butterknife.OnClick;public class MainActivity extends Activity { /** * 注解的View对象 */ @Bind(R.id.tv_title) TextView tv_title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** * 注解初始化 */ ButterKnife.bind(this); tv_title.setText("Hello Annotations"); } @OnClick(R.id.tv_title) public void Hello() { Toast.makeText(this, "Hello Annotations", Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { super.onDestroy(); ButterKnife.unbind(this); } /** * 打印处输入的内容 * @param str * @return */ private String print(String str) { System.out.println(str); return str != null ? str:""; }}
第四步:编译的时候会生成文件MainActivity$$ViewBinder类,其实在运行时执行ButterKnife.bind(this)的时候就是执行了下面的文件的bind方法。实现了最终的绑定。所以绑定还是运行时的,但是注解解释是在编译期的。
注解生成辅助文件内容:
// Generated code from Butter Knife. Do not modify!package com.csm.butterknife;import android.view.View;import butterknife.ButterKnife.Finder;import butterknife.ButterKnife.ViewBinder;public class MainActivity$$ViewBinder<T extends com.csm.butterknife.MainActivity> implements ViewBinder<T> { @Override public void bind(final Finder finder, final T target, Object source) { View view; view = finder.findRequiredView(source, 2131296319, "field 'tv_title' and method 'Hello'"); target.tv_title = finder.castView(view, 2131296319, "field 'tv_title'"); view.setOnClickListener( new butterknife.internal.DebouncingOnClickListener() { @Override public void doClick( android.view.View p0 ) { target.Hello(); } }); } @Override public void unbind(T target) { target.tv_title = null; }}
第五步:运行效果
0 0
- ButterKnife注解框架使用
- ButterKnife 注解框架的使用
- Android ButterKnife注解框架使用
- Android Studio使用butterknife注解框架插件Android Butterknife Zelezny
- Android Studio中使用ButterKnife注解框架
- AndroidStudio中使用最新ButterKnife注解框架
- 38.ButterKnife注解框架的使用
- ButterKnife 8.4 注解框架的使用
- 注解框架ButterKnife的使用方式
- Android注解框架(ButterKnife的简单使用)
- Android Butterknife 注解框架的使用
- 注解式框架--Butterknife的使用
- butterKnife注解开发框架
- Android butterknife注解框架
- Android ButterKnife注解框架
- butterknife注解框架更新
- butterknife注解框架
- 注解框架ButterKnife
- Guava学习——集合类BiMap
- 设计模式-抽象工厂
- hdu 1255 覆盖的面积(线段树离散化)
- java单例的几种实现方式
- iOS 应用发布流程
- ButterKnife注解框架使用
- 《Erlang 程序设计》练习答案 -- 第六章 顺序程序的错误处理
- chat function based on pthread and ipc
- 设计模式-生成器模式(Builder)
- Django中块标签for endfor的使用
- Android 通过开源框架实现加载网络图片并下载到SD卡通知系统相册显示,(并实现分享图片功能)
- SQL Server 大文件异地备份
- Java Socket Programming
- HDU 5562 Clarke and food(排序)——BestCoder Round #62(div.2)