云炬Android开发笔记 5-5,6Loading框架集成与完善AVLoadingIndicatorView
3.1 第三方框架的效果
【地址】https://github.com/81813780/AVLoadingIndicatorView
【说明】在该地址中已经存在怎样使用的步骤;
3.2 集成封装获取某种类型的View
【添加依赖】
【说明】各种的效果的获取使用过的是反射的技术,但是反复使用反射会影响设备的性能;因此做了一个机制的封装;
【原理】以一种缓存的方式创建loader,不需要每次使用loader的时候进行反射,这样性能会有很大幅度的提高。
3.3 不同的style的枚举的封装
【对不同的类型进行封装】com.flj.latte.ui.loader.LoaderStyle
1 package com.flj.latte.ui.loader;
2
3
4 @SuppressWarnings("unused")
5 public enum LoaderStyle {
6 BallPulseIndicator,
7 BallGridPulseIndicator,
8 BallClipRotateIndicator,
9 BallClipRotatePulseIndicator,
10 SquareSpinIndicator,
11 BallClipRotateMultipleIndicator,
12 BallPulseRiseIndicator,
13 BallRotateIndicator,
14 CubeTransitionIndicator,
15 BallZigZagIndicator,
16 BallZigZagDeflectIndicator,
17 BallTrianglePathIndicator,
18 BallScaleIndicator,
19 LineScaleIndicator,
20 LineScalePartyIndicator,
21 BallScaleMultipleIndicator,
22 BallPulseSyncIndicator,
23 BallBeatIndicator,
24 LineScalePulseOutIndicator,
25 LineScalePulseOutRapidIndicator,
26 BallScaleRippleIndicator,
27 BallScaleRippleMultipleIndicator,
28 BallSpinFadeLoaderIndicator,
29 LineSpinFadeLoaderIndicator,
30 TriangleSkewSpinIndicator,
31 PacmanIndicator,
32 BallGridBeatIndicator,
33 SemiCircleSpinIndicator,
34 CustomIndicator
35 }
3.4 对传入的样式/参数封装
【样式的封装】需要封装是否需要透明度、颜色等值的传入;
【传入样式参数并作为根布局】
3.5 工具类-填充参数的设置
【工具类】新建工具类的权限一般 放为:public static;
3.6 继续完善类
【设置缩放比例】为了适应 不同的设备的屏幕的不同的大小,需要对加载的loader进行缩放
【创建集合,统一管理不同类型的loader】【学习思想】在不需要loaders的时候,只要遍历集合,一一的关闭loaders即可;
【提供默认的loaders样式】
【关闭和显示对话框的loader】
【说明】此处使用的dialog.cancle(),因为在关闭dialog之后会调用onCancle()方法,可以响应在关闭对话框之后的一些动作;
dialog.dismiss():直接关闭对话框,没有响应;
3.7 网络请求中加入loader
【client】
【builder】
【说明】handler声明的时候加关键字static;可以避免内存泄露;
【测试】
【增加失败时候关闭loader】