《Android进阶之光》--ButterKnife
No1:
添加依赖库
Project的build.gradle文件添加
buildscript{
...
dependencies{
...
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
在Module:app的build.gradle文件添加
apply plugin:'com.neenbedankt.android-apt'
...
dependencies{
...
compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
}
No2:
绑定控件id
@BindView(R.id.tv_text)
TextView tv_text;
No3:
绑定资源
@BindString(R.string.app_name) String appName; @BindArray(R.array.swordsman) String[] swordsman; @BindDimen(R.dimen.activity_horizontal_margin) float margin;
No4:
绑定监听
@OnClick(R.id.bt_button1) public void showToast(){ } @OnLongClick(R.id.bt_button2) public boolean setText(Button button){ return true; }
@OnTextChanged(value=R.id.et_edittext,callback=OnTextChanged.Callback.BEFORE_TEXT_CHANGED) void beforeTextChanged(CharSequence s,int start,int count,int after){ } @OnTextChanged(value=R.id.et_edittext,callback=OnTextChanged.Callback.TEXT_CHANGED) void onTextChanged(CharSequence s,int start,int before,int count){ } @OnTextChanged(value=R.id.et_edittext,callback=OnTextChanged.Callback.AFTER_TEXT_CHANGED) void afterTextChanged(Editable s){ }
@OnTouch(R.id.bt_button3) public boolean onTouch(View view,MotionEvent event){ return true; } @OnItemClick(R.id.lv_list) void onItemClick(int position){ }
No5:
可选绑定
@Nullable
@BindView(R.id.tv_toptext)
TextView name;
No6:
ButterKnife注解处理器是ButterKnifeProcessor,主要处理逻辑都在process方法中
->findAndParseTargets
->brewJava
->createBinding
->findBindingConstructorForClass
->findRequiredViewAsType
->findRequiredView
->DecorView.findViewById
->castView
标签:
android进阶之光
, ButterKnife
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现