-
Notifications
You must be signed in to change notification settings - Fork 36
Home
szysky edited this page May 8, 2017
·
2 revisions
- 类似微信, QQ的群组头像
- 对头像的自定义矩形, 圆角矩形, 圆形, 描边等
- 支持
url
集合设置, 可以自动下载显示
- 首先通过策略模式将多张图片的排列规则, 和图片的装饰裁剪效果通过两个接口隔离出去. 可以让使用者动态设置不同的展示策略或者传入自定义策略.
-
QQLayoutManager
qq的环形群头像 -
WeChatLayoutManager
微信的九宫格头像
-
- 加入二级缓存机制, 对操作的图片进行内存和磁盘缓存. 并对最近使用的图片时所采取的大小进行缓存. 在获取的时候优先获取对应大小图片. 失败再获取内存原尺寸图片. 再失败就获取磁盘原尺寸图片. 再失败就网络加载.
-
IDrawingStrategy
的实现类实现了许多常用的图形展示. 供类库调用. 外部只需要设置对应参数即可. 也可以自定义比如心形的装饰规则.
-
单例模式
ImageLoader
缓存控制类为全局存在. -
策略模式 图片的具体布局由一个接口来实现. 这个接口可以动态设置(存在内置实现). 类似于
RecycleView使用的布局管理器
. -
拷贝模式 对
ILayoutManager
接口中的计算每个子元素的布局信息的类结构实现Cloneable
. -
享元模式 对多张图片请求的实体类, 为了高效复用利用静态链表结构实现复用. 类似
Message.obtain(), Message.recycle()
的实现. -
工厂方法 生成一个类定义几个生成不同形状的方法. 提供给
具体的绘图策略
使用.
- 图片地址的有效匹配(正则).
https?://.*?.(jpg|png|bmp|jpeg|gif)
- 图片控件的默认图片优先级比全局默认图片高
- 使用自定义注解+
@IntDef
实现枚举的功能. - 多张图片时使用**混合模式setXfermode()**实现圆形头像等.
- 单张图片时使用着色器BitmapShader来实现圆形头像等.
- 实现自定义xml属性, 并对
padding
,content_wrap
等属性进行兼容.