ButterKnife从严格意义讲不算是依赖注入框架,它只是专注于 Android系统的View注入框架,并不支持其他方面的注入。它可以减少 大量的findViewById以及setOnClickListener代码,简化代码并提升开发 效率。
1.ButterKnife的注解使用方法
(1)添加依赖库
(2)绑定控件
用注解@BindView绑定控件id
class LoginActivity : AppCompatActivity() {
@InjectView(ID = R.id.userName)
val editText: EditText? = null
@InjectView(ID = R.id.password)
val editText1: EditText? = null
@InjectView(ID = R.id.login)
val button: Button? = null
@InjectView(ID = R.id.newUser)
val text: TextView? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
ViewUtils.bind(this)
}
(3)绑定资源
可以用注解@BindString、@BindArray、@BindBool、 @BindColor、@BindDimen、@BindDrawable和@BindBitmap。这里我 们拿@BindString、@BindArray和@BindDimen来进行举例。
(4)绑定监听
用@OnClick来对“点击事件”进行监听,同理也可以用 @OnLongClick来对“长按点击事件”进行监听
@OnClick(value = R.id.login)
fun OnClick(){
Toast.makeText(this,“hello”,Toast.LENGTH_SHORT).show()
}
(5)可选绑定 @BindView或者其他的注解操作符,如果不能找到目标资源,则会 引发异常。
3.ButterKnife原理解析
ButterKnife 采用的是编译时注解