回顾前文,链接在下
牛油刀(1)
ButterKnife——牛油刀(2)
3.多个控件绑定一个事件
【案例】2个按钮,绑定到一个事件上。
activity_main3.xml
MainActivity3.java
效果:
4.自定义控件中的事件
步骤:
(1)创建自定义控件
(2)在控件内,通过绑定的形式指定该控件的默认事件
MyButton.java
activity_main4.xml
效果:
【拓展】如果每个按钮既有公共的逻辑,又有独特的逻辑,如何处理?
自定义按钮实现:
公共逻辑是消息弹出“保存开始”。
2个按钮,第一个按钮实现加法,对2个数求和;
第二个按钮实现减法,对2个数求差。
在主界面输入2个数,点击按钮分别执行求和和求差。
MyButton2.java
activity_main5.xml
MainActivity5.java
效果:
5.通过Setter对绑定的集合元素进行批量操作
如何定义一个Setter?
这个setter可以是让所有按钮指定颜色,也可以让所有按钮失效的操作。
通过实现Setter接口,来创建实例。
activity_main6.xml
MainActivity6.java
效果:
#(接)1.如何卸除绑定?
为什么要卸除绑定?
释放资源。
如何卸除绑定?
当绑定生效后,有可能需要卸除绑定,类似于“非常驻型广播接收者”,在界面加载或创建部分,进行绑定,在界面的stop之后或者destroy之后需要卸除绑定,目的是让程序的性能更好。
【案例】在Fragment中实现卸除绑定:两个Fragment切换,第一个Fragment不再使用,就需要在第一个Fragment中卸除绑定。
fragment_blue.xml
BlueFragment.java
fragment_red.xml
RedFragment.java
MainActivity.java
效果:
日志:
2.为绑定的资源设置可选注解或者可空注解
可空注解:@Nullable
可选注解:@Optional
作用:即使没有绑定到资源,也不会报错。
【案例】
情况1:资源不存在,也绑定,看是否报错;
情况2:使用可选或可空注解后,资源不存在,看是否报错。
activity_main2.xml
test.xml
MainActivity2.java
效果:不会报错
3.Glide
用于图片处理、加载。
类似的框架有:picasso、fresco、ImageLoader
在Android开发中,经常会大量使用图片,尤其图片本身很大,会造成程序的内存溢出。因此在android os内部有约定,当程序运行时超出某某内存限制,就会抛出内存溢出错误提示(OOM:out of memory)。
这些图片框架都可以做到:
大图加载、图片缓存、自动生成缩略图、动图加载。
官网地址:https://muyangmin.github.io/glide-docs-cn/
Glide支持拉取、解码、展示视频快照、图片、Gif动画。
4.第一个Glide示例
(1)获取Glide
implementation ‘com.github.bumptech.glide:glide:4.11.0’
annotationProcessor ‘com.github.bumptech.glide:compiler:4.11.0’
(2)加载一张图片
build.gradle:
activity_main3.xml
MainActivity3.java
效果:
点个关注和赞赞哦!后期继续更新!么么叽么么叽么么哒!