Android 加载本地图片(文件管理器中的图片墙)
--关于图片墙的一些感悟与疑问,希望大家共同探讨。
(By伊叶也)
图片显示及监听
1、图片显示:基本上就5种显示形式(如果同时嵌入5种形式,采用什么设计模式好些(策略模式?))
(1)纵向不规则堆放图片
2-5列,建议以像素大小为限(?),要为每一流进行标记(长度),[图片压缩采用纵向大小(?)为基本单位,进行等比例压缩]
(2)横向纵向不规则堆放图片
采用自左到右、自上到下摆放策略(?)
(3)横向不规则堆放图片
(4)对图片打包成图片文件夹显示
(5)gridView形式
2、对已经加载成功的图片在ImageView中显示动态效果。(开启几个线程?(是否考虑Cpu核心数))
3、图片的点击效果的检测(对已经加载的图片设置监听事件(经测试可行),每个图片View设置响应事件,每个View下设置setTag(另外如果View在缓存中已经消失,监听是否还存在?)
图片(缩略图)硬盘存储
1、对每个图片开启线程进行图片压缩,并采用LRU算法将图片存入本地缓冲文件,设置硬盘缓存文件大小,如果剩余空间不足,将不缓存。(最多60M(根据设备可变动),剩余空间不足60M,按照可用空间的1/3进行存储)
2、本地缓存缩略图的加密(如何加密??)
图片(缩略图)内存存储
如果内存足够:使用LRU算法将图片存入内存中
(1)设备可以为每个应用程序分配多大的内存?(如果剩余空间较少,就加载可用内存的1/3(是否可以?),如果剩余空间过大,___(设置多少合适??)。
(2)图片被访问的频率有多高?会不会有一些图片的访问频率比其它图片要高?如果有的话,你也许应该让一些图片常驻在内存当中,或者使用多个LruCache 对象来区分不同组的图片。(默认文件图标可以采用这种形式)
如果内存不足:_____(是否可以采用软引用进行图片加载??)
(3)设备屏幕上一次最多能显示多少张图片?有多少图片需要进行预加载,因为有可能很快也会显示在屏幕上?
你的设备的屏幕大小和分辨率分别是多少?一个超高分辨率的设备比起一个较低分辨率的设备,在持有相同数量图片的时候,需要更大的缓存空间。
图片加载
1、开启线程检测内存中是否含有该图片(是否需要进行检测原图片??),如果存在,直接刷新到View中;如果不存在,就检测原图片是否存在,如果存在就读取本地缩略图缓冲文件,并加载到View中,如果不存在,将缓存缩略图删去。
图片删除、添加、移动
1、进行硬盘缓冲图片的增删
2、进行内存缓冲图片的增删
图片搜索算法:(何时启用??(硬盘重新加载??(如果存在第三方软件对图片进行增删改查,怎么办??))是否每次都启用??)
1、根据缓存图片的目录进行快速搜索,然后对其他硬盘目录进行n(多少合适??)层目录搜索,对存在图片的目录是否进行加深搜索(多少合适??)
2、全局遍历搜索:先对缓存图片的目录进行搜索,后进行全局遍历。
3、???