forked from panpf/sketch
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODOS.txt
117 lines (115 loc) · 12.4 KB
/
TODOS.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
待办:
library:
>* (完成)支持读取本地APK文件的图标(已安装APP的图标也可以通过其本地APK文件的方式读取其图标)
>* (完成)示例APP增加一个页面,展示读取已安装APP或本地APK文件的图标的功能。页面分两部分,分别显示已安装APP列表和扫描到的本地APK包列表
>* (完成)修复首页竖的默认图貌似裁剪跑偏的问题
>* (完成)去掉RequestFuture,fire()方法直接返回Request,这样就少创建一个对象了
>* (完成)新增加载级别,并将加载级别参数应用到每个请求中,MEMORY表示只从内存加载;LOCAL:表示只从没存和本地加载;NETWORK:表示最终还会从网络加载,这样就能实现移动网络下不从网络加载图片的功能,另外看这样能否替代暂停功能的实现
>* (完成)增加在移动网络下不加载网络图片的功能
>* (完成)SketchImageView支持在移动网络下不加载图片的时候支持手动点击加载功能(是否要新增加一个可以提示“点击加载”的默认图片,同loadingDrawable是同级的)
>* (完成)改善框架实现,便于使用者自定义整个流程中的每个环节
>* (搞定)去掉各种toStatus方法,去掉DEFAULT_ENABLE_DISK_CACHE
>* (搞定)检查下拆分后的各方法
>* (搞定)组织下拆分后的字段和方法
>* (搞定)SketchImageView支持点击加载已经搞的差不多了,还差在displayrequest和displayoptions中增加一个clickloaddrawable并在适当的时候显示这张图片
>* (搞定)将MobileNetworkPauseDownloadManager纳入Sketch
>* (搞定)将所有PauseDownloadNewImage改为PauseDownload PauseLoadNewImage也一样
>* (搞定)回收利用request
>* (搞定)立马着手搞定重复利用request的功能,因为失败重试以及暂停下载和onAttachedToWindow()里的恢复图片都要用
>* (搞定)获取缓存文件的时候要考虑其它的目录,这样就可以解决一些问题,比如在未插入SD卡之前缓存文件是放在系统空间里的,插入sd卡之后缓存目录就变成了sd卡,那么查找缓存文件的时候也要到系统缓存去看看
>* (搞定)getCacheFile()如果没有的话就直接返回null
>* (搞定)display请求在加载之前要先从内存缓存中查找一下
>* (搞定)display、load和download的listener都在主线程执行
>* (搞定)支持设置缓存ID
>* (搞定)修改包名为me.xiaopan.sketch,其它项目也要照办
>* (搞定)取消Request之间的继承关系
>* (搞定)示例APP增加暂停下载时点击重新加载图片和失败时点击重新加载图片选项
>* (搞定)还要将waitdisplayrefcount改为int,因为执行加载前要从内存中判断下是否已经有了,有了的话就要设置等待显示,这时候如果多个共用的话就得用int计数了
>* (搞定)display请求执行加载之前先去判断内存中是否已经存在了符合要求的图片,有的话取出来计数加一
>* (搞定)返回图片mimeType,帮助判断是什么类型的图片
>* (搞定)SketchImageView支持在右下角根据mimeType显示gif角标
>* (搞定)load和download也要支持requestLevel
>* (搞定)等待显示计数不能放在setIsDisplayed方法中执行了,因为如果没有使用SketchImageView就不会调用setIsDisplayed方法,这样的话就惨了
>* (搞定)RecycleGifDrawable不能使用TransitionImageDisplayer
>* (搞定)考虑项目中没有集成android-gif-drawable的时候 碰到Gif图该怎么处理,原则上是初始化的时候通过反射看能否拿到GifDrawable拿不到就说明没有,然后就不处理
>* (搞定)SketchImageView的getImageShapeClipPath方法圆角矩形还没有处理呢
>* (搞定)SketchImageView增加单独的DisplayOptions,这样也方便在应用模板后拿到getDisplayOptions直接修改,这样进一步增强了灵活性
>* (搞定)现在直接集成了gif-drawable,但还要判断没有libpl_droidsonroids_gif.so的时候改怎么处理
>* (搞定)解码apk时,先将apk图片存到本地缓存区然后从本地读
>* (搞定)DiskCache默认设为100m
>* (搞定)自定义一个BitmapDrawable,增加srcRect功能,这样就可以随意实现过渡效果了
>* (搞定)为了解决recycleview不遵守约定在attwindow之前执行getview方法,就在ondewindow的时候设置个标记意思是尚未调用display方法,然后在display方法里将这个标记设为一设置,然后在onattwindow里检查这个标记如果尚未设置就企图使用旧的请求加载,这样貌似就可以在onattwindow的时候设置drawable为null了
>* (搞定)当请求取消的时候那些滞留在内存中的bitmap该怎么办,目前load过程中的都已在取消时回收
>* (搞定)还要更加精细化request的运行状态,比如在取消时检查当前的状态,如果合适的话就回收bitmap
>* (搞定)搞一个高斯模糊的图片作为背景
>* (搞定)搜索的默认关键词改为gif色图
>* (搞定)gif drawable 不能使用过渡显示器
>* (搞定)直接集成GIFdrawable到sketch中
>* (搞定)当bitmap创建之后遇到的各种取消,并且没有放到内存缓存之前应该主动释放Bitmap(在解码完后发现取消了就回收Bitmap)
>* (搞定)我擦imageholder处理完了之后原图不能回收啊
>* (搞定)增加一个接口,将sketchimageview的特别功能抽离出来,方便别人自定义,最重要的是在display之前加一个初始化的方法,方便初始化一些在getview中频繁设置的属性
>* (已经搞成瀑布流了)将搜索列表改为RecyclerView
>* (搞定)去掉android.support.annonations
>* (搞定)lrucache换成string,drawable这样就能放各种drawable了
>* (搞定)再次思考是否能用drawable的bounds解决transtion变形问题
>* (搞定)明星个人主页要用瀑布流(上百度搜索下瀑布流怎么搞,有没有好的实现方式)StaggeredGridLayoutManager.setGapStrategy(GAP_HANDLING_NONE)貌似就不会换位置了
>* (搞定)修改所有日志总字符串的写法,写一个公共的专门连接字符串的方法
>* (搞定)要不要名字改为Sketch
>* (搞定)SketchImageView的点击涟漪效果,快速点按的时候应该快速消失,并且在2.3版本上涟漪效果失效
>* (搞定)是否不再默认从ImageView上解析resize并且对图片进行裁剪,以前这样做的目的是为了解决图片变形问题,现在呢?貌似不需要了
>* (搞定)支持设置bitmap.config
>* (搞定)将bitmapConfig,改成低质量的图片
>* (搞定)示例APP增加修改Bitmap.Config,界面改了一点儿,其它都没动
>* (搞定)有些明确需要透明效果的处理器不能跟着bitmapConfig走
>* (搞定)不再提供bitmapConfig设置,改由自动根据mimeType来选择合适的config,这样更加智能
>* (搞定)低版本支持WEBP
>* (低版本不再支持WEBP了,因为WEBP库不支持inSampleSize)已经实现了低版本支持了WEBP,但是目前DefaultImageDecoder代码逻辑还比较混乱,需要再优化以下
>* (搞定)优化ImageFragment中图片显示失败时的提示方式,现在显示失败图片太二了
>* (搞定)SrcBitmapDrawable改名为SketchBitmapDrawable
>* (搞定)把SketchImageView中跟ImageView相关的方法都在interface中也定义一份,这样Sketch中就不需要明确引用ImageView,也更方便别人自定义
>* (搞定)找个地方给图片给改成圆角的,目的是为了展示圆角的效果
>* (搞定)BindBitmapDrawable的setFixedSize不应该转交给recycleDrawable处理,因为每一个都士不一样的,而RecycleDrawable却是一样的,因此比较纠结
>* (搞定)对loadingDrawable提供内存缓存支持,默认缓存容量为可用最大内存的十六分之一,现在你可以放心的对占位图进行各种处理了
>* (搞定)CommentUtils重命名为SketchUtils
>* (搞定)sample中关于页面信息需要更新
>* (搞定)readme.me增加最低版本说明
>* (搞定)初始化Sketch的加入输出版本信息,例如Sketch,2.0.0, 200, release
>* (搞定)是否要对ImageHolder加入同步,貌似还是很有必要的,例如失败图片是在异步线程或主线程都会同时调用的,加同步还是必须的,实现方案是,ImageHolder搞成接口,例如换成PlaceholderImage接口,然后搞三种继承LoadingPlaceholderImage,FailureImage,PauseDownloadImage,然后由于后两者会在异步线程中调用,因此只给后两者加同步
>* (搞定)用百度云测试一下
>* (搞定)readme增加感谢android-gif-drawable说明
>* (搞定)增加forceUseResize参数
>* (搞定)低质量图片参数改名 翻转过来
>* (搞定)HintView里的失败图标和按钮以及下拉帅新的箭头都是灰色的或者样式不符合要求
>* (搞定)enableMemoryCache改名为cacheInMemory,还有enableDiskCache
代办池:
>* 用一下其它的几款图片加载器,例如UIL、fresco、glide、picasso对比一下,特别是对RecyclerView的兼容性,然后写博客
考虑的一些问题:
>* (没有必要,因为是BitmapDrawable的话返回的就是其自己,所以没有必要重新绘制)调用drawableToBitmap后drawable是否有必要发现是bitmapdrawable立即释放)
>* (不必,验证HashCode后发现每次都是不一样的)如果从本地apk文件中读取的icon是否缓存(例如多次读取到的是同一张图片),那么就有必要重新绘制一张,然后回收旧的,因为我要保证每一张都是独立的不一样的
>* (胡搞)现在需要在ondetowindow的时候主动取消加载,在notifydrawable方法中加入对Binddrawable的处理,在Bingdrawable中取消请求,这样就不必考弱引用来维护关系了
>* (不这么搞了)在Sketch中加一个参数,意思就是是否开启暂停加载的功能,然后所有的PauseLoadFor类都判断次参数
>* (不靠谱)改AsyncDrawable为RecycleDrawable形式
>* (经测试会自定停止但尚不知是怎么做到的)GifDrawable是否有在隐藏的时候停止播放的功能,有的话是否需要ImageView配合
>* (已经采取了新的方式实现,不再需要处理图片了)对loading drawable处理的时候加上判断尺寸比例是否一样,一样的话就不处理了
>* (不需要已采用新方案实现)考虑是否要去除对loadingDrawable的处理
>* (ClipPath有明显的锯齿,并且无法解决,因此不能使用)SketchImageView支持ClipPath
>* (ClipPath有明显的锯齿,并且无法解决,因此不能使用)SketchBitmapDrawable支持ClipPath
>* (不必了,之前加这个参数主要为了解决圆角图片的问题,现在在圆角处理器中加入了这个功能,解决了这个问题)resize加一个参数,一定要拿到的图跟resize尺寸一样
>* 考虑如何处理下载的垃圾文件,申请空间的时候清理文件要处理那些下载垃圾
>* 考虑将默认图也放到内存缓存中,试图通过这样的方式解决之前担心的默认图太多导致始终占用内存的问题
>* 考虑如何支持用已缓存的小缩略图作为默认图片(比如支持从内存缓存中加载默认图)
>* 考虑支持外部添加一个bitmap到内存缓存中,那么决定是否用recycledrawable就要放在memorycache中了
>* 考虑是否把Bitmap往缓存里放的时机放到主线程来搞
>* 用纯色定义的图片作为默认图的时候会发生什么情况呢?
>* 既然APK图标无需关心回收问题,那是不是就没必要费劲给搞到本地缓存区再读,直接读取显示不回收不就行了,然后再考虑如何处理的问题,因为处理之后就需要回收了
>* 考虑对宽高固定的ImageView和普通图片使用像GlideDrawable一样的方式实现,这样可能会更顺畅一点
>* 考虑支持不同的应用场景,例如background,drawableTop等
>* 支持断点续传
>* 支持OKhttp
>* loading支持bitmap
>* 可以根据图片ID来作为默认图片,这样貌似就能实现默认图是缩略图的功能了
>* 参考Glide、Fresco和Picasso
>* 写一个系列博客介绍Sketch,也算是做一个总结
>* 想办法支持一次加载两张图一张小图一张大图
>* 把昨晚看的一篇处理原型图文章里的原型背景拿过来试试
>* 解码缓存文件失败的时候要再次下载