ButterKnife的学习和使用

简介:           最近去面试有不少公司都有问到这个框架,作为一个特老实的孩子,我也是没用过就老老实实地承认没用过。结果前两天在网上看了一下ButterKnife的用法,两个小时不到就搞懂了,所以说还是要多学习、多接触、多使用。

          最近去面试有不少公司都有问到这个框架,作为一个特老实的孩子,我也是没用过就老老实实地承认没用过。结果前两天在网上看了一下ButterKnife的用法,两个小时不到就搞懂了,所以说还是要多学习、多接触、多使用。趁热打铁,于是自己写了一个简单的demo吧,毕竟光看不练还是会有问题的,有些坑早踩晚踩都是踩。

首先是配置ButterKnife,这个相信大家都没有问题:

        1、在项目的project 的build.gradle 文件中的dependencies标签下添加

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

    2、在Module的build.gradle 文件中添加

apply plugin: 'android-apt'

        3、在Module的build.gradle 文件中的dependencies标签中添加

compile 'com.jakewharton:butterknife:8.4.0'
apt 'com.jakewharton:butterknife-compiler:8.4.0'
然后再重新build一下项目,或者直接点击build.gradle文件右上方提示Sync Now。

        接下来就可以使用ButterKnife了,这里我自己写了一个demo,为了方便查看它的实现代码,我在页面中间显示了它们的代码,也就是说当我们点击ImageView、TextView、Button或者其他组件时,相应的就可以看到那些代码了。 

        1、关于ImageView的绑定,这里就要提到两个ButterKnife中的绑定事件——@BindView()绑定控件和@BindBitmap()绑定图片:

     @BindView(R.id.iv_prompt)
     public ImageView ivPrompt;
     @BindBitmap(R.mipmap.ic_launcher_round)
     Bitmap bitmap;

     ivPrompt.setImageBitmap(bitmap);
把控件ID传入@BindView的括号里面进行控件绑定,把图片ID传进@BindBitmap的括号里面进行图片绑定。其实@BindView就相当于我们的findViewById,不过要注意的一点就是这里要用public来修饰ImageView。再给它加一个绑定事件——@OnClick(),看着是不是很眼熟,特别像我们以前用的setOnClickListener里面的onClick方法,不过要注意的是这里是大“O”,不是小“o”,代码如下:

    @OnClick(R.id.iv_prompt)
    public void onClickBitmap() {
        tvTitles.get(1).setText("此处省略多行代码");
    }
上面的onClickBitmap其实就类似于我们以前的onClick()方法,但是比以前简单多了,可以说是省了不少重复琐碎的代码。

       2、关于TextView的绑定,因为TextView我们通常要设置文字、文字颜色、文字大小,所以这里就要提到Butterknife的@BindString()绑定字符串、@BindColor()绑定颜色值和@BindDimen()绑定尺寸。另外我这个案例里面有标题和提示内容两个TextView,所以这里还要用到ButterKnife的@BindViews({})绑定多个相同类型的组件。

    @BindViews({R.id.tv_title, R.id.tv_prompt})
    public List<TextView> tvTitles;
    @BindString(R.string.app_name)
    String title;
    @BindColor(R.color.color_title)
    int titleColor;
    @BindDimen(R.dimen.text_size_8)
    int size8;
    tvTitles.get(0).setText(title);
    tvTitles.get(0).setTextColor(titleColor);
    tvTitles.get(0).setTextSize(size8);
在上面的代码中最需要最注意的一点就是@BindViews后面跟的是一个圆括号里面包了一个花括号,这样才能在里面写多个控件ID,此外对应的要用List把多个TextView装起来,使用的时候再根据它们的position来获得并进行处理。同样地,我也给标题对应的TextView加了一个@OnClick,这里就不细说了,和上面ImageView的使用方式一样。

       3、关于Button的绑定,像Button我们一般也是给他绑定控件、文字等等,所以这块就不贴代码了。但是Button的话,大家可能会想到setOnLongClickListener。是的,Butterknife里面也有一个@OnLongClick和它相对应,奉上代码:

@OnLongClick(R.id.btn_right)
    public boolean onLongClickWarn() {
        tvTitles.get(1).setText("此处省略多行代码");
        return true;
    }
要特别注意的就是,这个方法要在最后一行加上return true。

       4、除了上面这些,还有@BindArray,我这里也是写了四个Button放在页面的底部,然后把这个四个Button要显示的文字由这个绑定的数组中获取出来,并且也为他们分别绑定事件并写上响应方法,代码如下:

    @BindViews({R.id.btn_main_one, R.id.btn_main_two, R.id.btn_main_three, R.id.btn_main_four})
    public List<Button> btnBottomList;
    @BindArray(R.array.prompt_list)
    String[] promptList;
    for (int i = 0; i < promptList.length; i++) {
        btnBottomList.get(i).setText(promptList[i]);
    }
    @OnClick(R.id.btn_main_four)
    public void onClickBottomFour(){
        onClickBottomBtn();
    }

    private void onClickBottomBtn() {
        tvTitles.get(1).setText("此处省略几行代码");
    }

好的,那么关于ButterKnife的学习和使用到这里就结束了,转载请注明,demo下载地址为










目录
相关文章
|
5天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
15天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
9天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
607 214
|
存储 人工智能 监控
从代码生成到自主决策:打造一个Coding驱动的“自我编程”Agent
本文介绍了一种基于LLM的“自我编程”Agent系统,通过代码驱动实现复杂逻辑。该Agent以Python为执行引擎,结合Py4j实现Java与Python交互,支持多工具调用、记忆分层与上下文工程,具备感知、认知、表达、自我评估等能力模块,目标是打造可进化的“1.5线”智能助手。
850 61
|
7天前
|
人工智能 移动开发 自然语言处理
2025最新HTML静态网页制作工具推荐:10款免费在线生成器小白也能5分钟上手
晓猛团队精选2025年10款真正免费、无需编程的在线HTML建站工具,涵盖AI生成、拖拽编辑、设计稿转代码等多种类型,均支持浏览器直接使用、快速出图与文件导出,特别适合零基础用户快速搭建个人网站、落地页或企业官网。
1262 157
|
4天前
|
编解码 Linux 数据安全/隐私保护
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
教程分享免费视频压缩软件,免费视频压缩,视频压缩免费,附压缩方法及学习教程
241 138
|
7天前
|
存储 安全 固态存储
四款WIN PE工具,都可以实现U盘安装教程
Windows PE是基于NT内核的轻量系统,用于系统安装、分区管理及故障修复。本文推荐多款PE制作工具,支持U盘启动,兼容UEFI/Legacy模式,具备备份还原、驱动识别等功能,操作简便,适合新旧电脑维护使用。
524 109