想了解Android注解ButterKnife的基本使用的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android注解的使用的相关问题,此外,我们还将为您介绍关于AndroidButte
想了解Android注解ButterKnife的基本使用的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于android 注解的使用的相关问题,此外,我们还将为您介绍关于Android Butter Knife 框架、Android ButterKnife Zelezny、Android Butterknife 注入框架、Android butterknife 的简单使用的新知识。
本文目录一览:- Android注解ButterKnife的基本使用(android 注解的使用)
- Android Butter Knife 框架
- Android ButterKnife Zelezny
- Android Butterknife 注入框架
- Android butterknife 的简单使用
Android注解ButterKnife的基本使用(android 注解的使用)
ButterKnife的最新版本是8.4.0。
首先,需要导入ButterKnife
的jar包。
在AndroidStudio中,File->Project Structure->Dependencies->Library dependency
搜索butterknife即可,第一个就是.
另外一种就是直接在build:grade(app)dependencies里添加:
compile 'com.jakewharton:butterknife:8.4.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
ok,现在正式开始使用吧,用法也很简单
在Activity子类的onCreate()
方法里使用ButterKnife.bind(this);
即可
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); tv1.setText("hi!sy")
注意:一定要在setContentView之后写。
再然后,把光标放在R.layout.activity_main上,鼠标右击,选中Generate...(Alt+Insert),点击会出现:
然后这样
选中的有TextView点击事件和findViewById的注解,点击Confirm就成功了!
什么,你说没有,别着急,你需要安装一个小插件(不要嫌麻烦,其实很简单,一劳永逸)
在AndroidStudio->File->Settings->Plugins->
搜索Zelezny下载添加就行 ,可以快速生成对应组件的实例对象,不用手动写。
使用时,在要导入注解的Activity 或 Fragment 或 ViewHolder的layout资源代码上,右键――>Generate――Generate ButterKnife Injections。
源码
public class MainActivity extends Activity { @BindView(R.id.tv_time) TextView tvTime; @BindView(R.id.activity_main) RelativeLayout activityMain; @BindView(R.id.tv_cal) TextView tvCal; @BindView(R.id.tv_date) TextView tvDate; Time time; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); tvTime.setText("Time类"); tvCal.setText("Calender类"); tvDate.setText("Date类"); initTime(); } private void initTime() { time = new Time(); time.setToNow(); } @OnClick({R.id.tv_cal,R.id.tv_date,R.id.tv_time}) public void onClick(View view) { switch (view.getId()) { case R.id.tv_time://点击第一个 String times = time.year + "年" + time.month + "月" + time.monthDay + "日" + time.hour + "时" + time.minute + "分" + time.second + "秒" + ":现在是一年中的第" + time.yearDay + "天"; Toast.makeText(this,Time.getCurrentTimezone() + times,Toast.LENGTH_SHORT).show(); tvTime.setText(times); break; case R.id.tv_cal: break; case R.id.tv_date: break; } } @Override protected void onDestroy() { super.onDestroy(); // Unbinder unbinder=ButterKnife.bind(this); // unbinder.unbind(); ButterKnife.bind(this).unbind(); } }
以上所述是小编给大家介绍的Android注解ButterKnife的基本使用,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!
Android Butter Knife 框架
Android Butter Knife 在项目中的配置及插件安装请见 AS 中安装插件及常用插件
ButterKnife 的优势
- 避免过多的 findViewById 的操作,直接对 view 进行注解绑定点击事件
- 因为是编译期的注解,在运行时不会影响 App 的效率,使用配置方便
- 方便的处理 Adapter 里的 ViewHolder 绑定问题
- 可以简化代码书写,逻辑清晰
ButterKnife 的使用
由于每次在 Acitivity 中都要进行 ButterKnife 的 bind 操作,所以建议将 bind 操作写到 BaseActivity 中,绑定 Activity 必须在 setContentView 之后,代码如下:
public abstract class BaseActivity extends Activity {
private Unbinder unbinder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
unbinder = ButterKnife.bind(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
unbinder.unbind();
}
protected abstract int getContentView();
}
而其他 Activity 只需继承 BaseActivity,实现 getContentView 方法,在 getContentView 返回 Activity 的布局文件即可。
具体使用方法可参看 Android Butter Knife 框架 —— 最好用的 View 注入
ButterKnife 使用心得
- ButterKnife.bind () 的调用在 Activity 中必须在 setContentView 之后
- 属性布局不能用 private or static 修饰,否则会报错
- 可以写一个 BaseActivity 来调用 ButterKnife.bind () 方法,子类则不需要再进行 bind 操作
- 在 8.4 中 ButterKnife 移除了 unBind 方法,使用 ButterKnife.bind (this) 返回一个 Unbinder 的引用,通过 Unbinder 的 unbind () 方法进行解除绑定
参考连接:
http://https://www.jianshu.com/p/9ad21e548b69
https://www.jianshu.com/p/83919fca8d84
Android ButterKnife Zelezny
参考地址:https://github.com/avast/android-butterknife-zelezny
1)下载插件:Preferences → Plugins → Browse repositories
and search for ButterKnife Zelezny
如下图所示:
2)重启studio,在build.gradle 中配置compile ''com.jakewharton:butterknife:6.1.0''
3) 在setContentView()布局xml上右键点击Generate,选择ButterKnife即可。
如下图:
Android Butterknife 注入框架
简介
ButterKnife是一个专注于Android系统的View注入框架,当一个布局十分复杂时,需要引入执行大量的findViewById代码来找到View的对象,有了ButterKnife可以很轻松的省去这些步骤。是大神JakeWharton的力作,目前使用很广。最重要的一点,使用ButterKnife对性能基本没有损失,因为ButterKnife用到的注解并不是在运行时反射的,而是在编译的时候生成新的class。项目集成起来也是特别方便,使用起来也是特别简单。
ButterKnife的优势
- 强大的View绑定事件和资源文件的绑定
- 使用的便捷性上,剔除了原始绑定时候的复杂性
- 由于大多数的注解都是在编译期,所以不会影响程序运行的效率
- 代码清晰,可读性相对来说要强很多
github 地址: https://github.com/JakeWharton/butterknife
如何使用?
在Android Studio 项目中配置ButterKnife
1.在Project的 build.gradle 中添加如下代码:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath ''com.android.tools.build:gradle:3.2.1''
//添加如下代码
classpath ''com.jakewharton:butterknife-gradle-plugin:9.0.0-rc2''
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
2.在App的 build.gradle 中添加如下代码:
apply plugin: ''com.android.application''
apply plugin: ''com.jakewharton.butterknife''//添加这一行
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.hejun.loader"
minSdkVersion 26
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro''
}
}
}
dependencies {
implementation fileTree(dir: ''libs'', include: [''*.jar''])
implementation ''com.android.support:appcompat-v7:28.0.0''
implementation ''com.android.support.constraint:constraint-layout:1.1.3''
testImplementation ''junit:junit:4.12''
androidTestImplementation ''com.android.support.test:runner:1.0.2''
androidTestImplementation ''com.android.support.test.espresso:espresso-core:3.0.2''
implementation ''com.jakewharton:butterknife:9.0.0-rc2''
annotationProcessor ''com.jakewharton:butterknife-compiler:9.0.0-rc2''//添加这一行
}
ButterKnife插件的添加:可以快速绑定
File -> Settings -> Plugins -> 搜索ButterKnife,找到Android ButterKnife Zeleany进行安装重启AndroidStudio
插件的使用:在布局资源上右键点击,如下图
选中需要绑定的view ,点击confim会自动生成代码
ButterKnife的注解类型
1.绑定注解,视图,资源等等
2.绑定事件
注意:在使用Butterknife 是要 绑定Butterknife .如下
1.在activity中绑定
public class MainActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//绑定初始化ButterKnife
ButterKnife.bind(this);
}
}
2.在Fragment中绑定
Fragment的生命周期不同于activity。在onCreateView中绑定一个Fragment时,在onDestroyView中将视图设置为null。当你调用bind来为你绑定一个Fragment时,Butter Knife会返回一个Unbinder的实例。在适当的生命周期(onDestroyView)回调中调用它的unbind方法进行Fragment解绑。使用ButterKnife.bind(this, view)进行绑定。
public class ButterknifeFragment extends Fragment{
private Unbinder unbinder;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
//返回一个Unbinder值(进行解绑),注意这里的this不能使用getActivity()
unbinder = ButterKnife.bind(this, view);
return view;
}
/**
* onDestroyView中进行解绑操作
*/
@Override
public void onDestroyView() {
super.onDestroyView();
unbinder.unbind();
}
}
3.在Adapter中绑定
在Adapter的ViewHolder中使用,将ViewHolder加一个构造方法,在new ViewHolder的时候把view传递进去。使用ButterKnife.bind(this, view)进行绑定
class Adapter extends BaseAdapter {
private Context context;
private List<Userbean> users = new ArrayList<>();
public Adapter(Context context) {
this.context = context;
}
public void addUsers(List<Userbean> userList) {
users.addAll(userList);
notifyDataSetChanged();
}
@Override
public int getCount() {
return users.size();
}
@Override
public Userbean getItem(int position) {
return users.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
viewHolder = new ViewHolder(convertView);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
Userbean userbean = users.get(position);
viewHolder.name.setText(userbean.getName());
viewHolder.password.setText(userbean.getPassword());
return convertView;
}
class ViewHolder {
@BindView(R.id.name)
TextView name;
@BindView(R.id.password)
TextView password;
ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}
}
Android butterknife 的简单使用
gitup 地址:https://github.com/JakeWharton/butterknife
介绍文章:https://blog.csdn.net/qq_29924041/article/details/80538360
一、导入
implementation ''com.jakewharton:butterknife:10.2.0''
annotationProcessor ''com.jakewharton:butterknife-compiler:10.2.0''
同时在上面的android中加上
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
二、安装插件
在 File->Setting->Plugins 中输入 ButterKnife Zelezny
添加插件,然后重启 AndroidStudio
三、在activity使用
先定义布局文件
activity:
在R.layout.activity_main中 alt+insert
四、在 fragment 中使用
布局与 activity 中基本一样
但是要加几个步骤
1、实例化
private Unbinder unbinder;
2、在onCreateView()方法进行绑定
3、最后记得在 onDestroyView () 方法中进行解绑
今天关于Android注解ButterKnife的基本使用和android 注解的使用的介绍到此结束,谢谢您的阅读,有关Android Butter Knife 框架、Android ButterKnife Zelezny、Android Butterknife 注入框架、Android butterknife 的简单使用等更多相关知识的信息可以在本站进行查询。
本文标签: