Android注入框架ButterKnife使用解析

Android注入框架ButterKnife使用解析

Android开发中使用注入框架,可减少findViewById的代码量,也能让我们的代码更加整洁,有许多著名的注入框架比如,ButterKnife,Annotation,XUtils,afinal等,最开始接触的是XUtils,后面开始接触到了ButterKnife; XUtils包含了许多模块,比如数据库操作orm,网络请求,图片及视图注入,而如果仅需要做视图注入的话BK更合适些。
今天来看看ButterKnife的使用。

文章目录1.添加依赖2.使用使用@BindView取代findViewById@OnClick点击事件资源绑定列表Adapter的ViewHolder

1.添加依赖

在项目的app/build.gradle文件中,添加如下代码

android {
...
// Butterknife requires Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}

dependencies {
implementation 'com.jakewharton:butterknife:10.2.2'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.2.2'
}

当前的开发环境:Android Studio: 3.1.2,直接使用官网上的的依赖版本会报错:

Manifest merger failed : Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from [com.android.support:support-compat:28.0.0] AndroidManifest.xml:22:18-91
is also present at [androidx.core:core:1.0.0] AndroidManifest.xml:22:18-86 value=(androidx.core.app.CoreComponentFactory).
Suggestion: add 'tools:replace="android:appComponentFactory"' to <application> element at AndroidManifest.xml:7:5-62:19 to override.

应该是AndroidX的问题, 同时在Issues中,作者也做了回答

You cannot use 10.x.x unless you also migrated to AndroidX. If you haven't migrated, you'll need to stick to 9.0.0 for now. Once you migrate, then you can update to 10.1.0 (or whatever is latest at that time).

As mentioned in the change log, 10.0.0 only supports AndroidX-enabled projects. If you have not yet migrated to AndroidX you need to use 9.0.0 for now.

因为我目前的项目没有migrated to AndroidX,所以会报错,修改一下butterknife的版本就可以了,将上面的依赖修改为如下

implementation 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

然后点击Sync Now,重新build一下项目就好了

2.使用
使用@BindView取代findViewById

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

@BindView(R.id.pieImageView) PieImageView pieImageView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
pieImageView.setProgress(50);
}

}

@OnClick点击事件

@OnClick(R.id.pieImageView) void click() {
Toast.makeText(this, "单击了吗?", Toast.LENGTH_SHORT).show();
}

资源绑定

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
// ...
}

列表Adapter的ViewHolder

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

public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}

小伙伴们,你们现在项目中使用注入框架是哪一个呀?欢迎在下方留言哦。

觉得文章不错的,给我点个赞哇,关注一下呗!
技术交流可关注微信公众号【君伟说】,加我好友一起探讨
微信交流群:加好友wayne214(备注技术交流)邀你入群,抱团学习共进步

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Android注入框架ButterKnife使用解析

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Android注入框架ButterKnife使用解析
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏