- 下拉刷新,调皮的海豚的实现原理
自定义View:SealDrawable extends RefreshDrawable implements Runnable
A Drawable is a general abstraction for "something that can be drawn."
- 展示长图和宽图
一、长图宽图的横向纵向滑动,自定义一个View:CylinderImageView。
二、长图显示思路:
1、使用decodeRegion将长图分成若干个区域。
2、使用listView分页显示别分成的若干个区域。
- 不同形状的ImageView
PPQ:RoundedImageView.java --> canvas.drawRoundRect
PaoPao: facebook fresco
- 展示高清图
高清大图两种方案:
1、服务端区分高清图和普通图url地址
2、自定义View,使用decodeRegion生成局部高清图
在项目中,采用Fresco下载和查看高清原图,
使用Fresco 监听图片下载状态(重写ControllerListener
)
显示下载进条:自定义Drawable继承ProgressBarDrawable,重写onLevelChanged(int level){}
遇到的问题:
同一个View控件查看大图和原图,切换url渲染会有一段黑屏,在中间时刻,给出上一个显示出来的缓存图片,转为Drawable存放在placeholder中解决
Fresco 监听图片下载
停止或暂停全部fresco图片下载的方法
Fresco.getImagePipeline().isPaused();
Fresco.getImagePipeline().pause();
Fresco.getImagePipeline().resume();
如何内存管理? 设置SampleSize:
ImageRegionDecoder /
calculateInSampleSize
如何加快加载速度?
DetailDiskCache.getInstance().get(HttpUtils.getAccessUrl(highUrl))