安卓“小试牛刀”:ButterKnife——牛油刀

1.ButterKnife——牛油刀

ButterKnife是一个专注于Android系统的View注入框架,在过去的项目中总是需要很多的findViewById来查找View对象,有了ButterKnife可以轻松省去这些步骤。目前使用较为广泛,最重要的一点,使用ButterKnife对性能基本不造成损失,因为ButterKnife用的是注解而不是运行时的反射,所以最终在编译时生成了新的class文件,项目集成非常方便,用起来相对简单。

(1)使用View中的控件,代码简化
(2)程序性能不受损失
特点:
(1)使用@BindView绑定View
(2)支持多个View同时绑定,可以设置相关的动作
(3)使用类似@OnClick设置监听器
(4)可以绑定资源
如何使用?
(1)添加依赖
(2)检查依赖添加是否成功
(3)绑定

【案例】
在这里插入图片描述
build.gradle(project):
在这里插入图片描述
依赖:

classpath ‘com.jakewharton:butterknife-gradle-plugin:10.2.3’

build.gradle(module):
在这里插入图片描述
依赖:

implementation ‘com.jakewharton:butterknife:10.2.3’
annotationProcessor ‘com.jakewharton:butterknife-compiler:10.2.3’

activity_main.xml
在这里插入图片描述
MainActivity.java
在这里插入图片描述
效果:
在这里插入图片描述

2.ButterKnife是如何实现性能不损失的绑定?

控件是如何实例化?
使用ButterKnife自动生成了findViewById相关代码,而不是使用反射,所以性能没有损失。

3.资源的绑定

android中哪些属于资源?
图片、布局、字符串、数组、样式、主题等。
使用ButterKnife的注解可以对资源进行绑定:
@BindBool 绑定逻辑值
@BindColor 绑定颜色值
@BindDimen 绑定一个尺寸
@BindDrawable 绑定一个图片
@BindInt 绑定一个整数
@BindString 绑定一个字符串
【案例】绑定一个图片到ImageView上
在这里插入图片描述
activity_main2.xml
在这里插入图片描述
MainActivity2.java
在这里插入图片描述
效果:
在这里插入图片描述
【案例】绑定字符串
在这里插入图片描述
strings.xml
在这里插入图片描述
activity_main2.xml
在这里插入图片描述
MainActivity2.java
在这里插入图片描述
效果:
在这里插入图片描述

4.非Activity中的绑定

子控件、Fragment、ListView、RecyclerView等等。这些控件都与View相关,加载布局时含有其他控件,如何绑定?
【案例】Activity中加载一个Fragment,Fragment中加载一个布局,布局中有2个按钮,如何对这两个按钮进行绑定?
在这里插入图片描述
fragment_my.xml
在这里插入图片描述
activity_main3.xml
在这里插入图片描述
MyFragment.java
在这里插入图片描述
效果:
在这里插入图片描述
【案例】在RecyclerView中实现绑定
绑定写在哪里?
需要创建Holder、Adapter、RecyclerView、主布局、条目布局。
主布局的绑定写入到Activity中即可。条目布局中的控件写在哪里进行绑定?
要求:
给定100个序号,以列表的形式展示100个序号。序号使用TextView显示。如何实现绑定?

在这里插入图片描述
item.xml
在这里插入图片描述
activity_main4.xml
在这里插入图片描述
MyHolder.java
在这里插入图片描述
MyAdapter.java
在这里插入图片描述
MainActivity4.java
在这里插入图片描述
效果:
在这里插入图片描述

【拓展】如果每个按钮既有公共的逻辑,又有独特的逻辑,怎么办?
(1)识别共同逻辑,和独有逻辑
(2)共同逻辑放在公共代码区域
(3)要想执行部分,由具体的实例来决定,就需要在实例部分传入具体的实现。
(3.1)所以需要定义接口,接口约定方法签名即可。
(3.2)要添加接口方法在什么地方调用。
(3.3)接口实现,需要在执行接口前传入。需要声明一个接口变量,用来接收外界传入接口的实现类的实例。
(3.4)外界实现这个接口,并传入。
(4)当用户点击按钮时,就执行已经传入后的接口实现方法。
【项目结构】
在这里插入图片描述
MyButton.java
1
2
activity_main.xml(约束布局用上)
约束布局详解,点我来瞅瞅!
在这里插入图片描述
MainActivity.java
在这里插入图片描述
效果:
在这里插入图片描述在这里插入图片描述

(续跟)1.绑定一组View

例如多个TextView一起绑定到一个List集合,集合是一个android资源。
使用注解@BindViews({x,y,z})
【案例】
在这里插入图片描述
activity_main.xml
在这里插入图片描述
MainActivity.java
在这里插入图片描述
效果:
在这里插入图片描述

2.绑定监听器

事件有哪些?
clickListener、SelectedItemListener等
监听器的绑定注解:

@OnClick(R.id.btn1)
public void click(View v){
}//此方法为事件发生时绑定到btn1上

【案例】
在这里插入图片描述
activity_main2.xml
在这里插入图片描述
MainActivity2.java
在这里插入图片描述
效果:
在这里插入图片描述
代码希望大家可以自己敲一遍,有需要讨论的地方留言私信都可以哦!

文章后续——牛油刀(2)

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫白媛

老板给个铜板啊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值