07/19
2013

Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

介绍总结的一些android公共库,包含缓存(图片缓存预取缓存网络缓存)、公共View(下拉及底部加载更多ListView底部加载更多ScrollView滑动一页Gallery)、及Android常用工具类(网络、下载、shell、文件、json等等)。

 

TrineaAndroidCommon已开源,地址为TrineaAndroidCommon@Github,欢迎Star或Fork^_*

Demo APK 可以方便的查看效果,在各大应用商店搜索 trinea android 下载即可,如:Google Play

 

PS:这是准备分享的三个系列之一,暂时告一段落,后续准备开始Android性能优化系列以及Java多线程系列

一. 缓存类

1. 图片缓存
使用见图片缓存的使用
适用:获取图片较多的应用,如新浪微博、twitter、微信头像、美丽说、蘑菇街、花瓣、淘宝等等。
主要特性:(1). 使用简单  (2). 轻松获取及预取新图片  (3). 包含二级缓存  (4). 可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法  (5). 可方便的保存及初始化恢复数据  (6).  省流量性能佳(有且仅有一个线程获取图片)  (7). 支持不同类型网络处理  (8). 可根据系统配置初始化缓存  (9). 扩展性强  (10). 支持等待队列  (11). 包含map的大多数接口。
效果图

image cache demo
2. 图片SD卡缓存
使用见:图片SD卡缓存的使用
适用:应用中获取图片较多且图片较大的情况,在微博、花瓣、美丽说、path这类应用中可以起到很好的效果。
主要特性:(1). 使用简单  (2). 轻松获取及预取新图片  (3). 包含二级缓存  (4). 可选择多种缓存算法(FIFO、LIFO、LRU、MRU、LFU、MFU等13种)或自定义缓存算法  (5). 可方便的保存及初始化恢复数据  (6).  支持文件sd卡保存及自定义文件名规则  (7). 省流量性能佳(有且仅有一个线程获取图片)  (8). 支持不同类型网络处理  (9).  可根据系统配置初始化缓存  (10). 扩展性强  (11). 支持等待队列  (12). 包含map的大多数接口。
效果图

android gallery

 

3. 网络缓存

使用见:Android网络缓存

适用:网络获取内容不大的应用,尤其是api接口数据,如新浪微博、twitter的timeline、微信公众账号发送的内容等等。

主要特性:(1). 可同步或异步获取数据  (2). 可自动根据服务器的返回头判断是否需要缓存 (3). 可自动根据请求头信息判断是否读取缓存

效果图

android http cache

 

4. 预取数据缓存

使用见:预取数据缓存PreloadDataCache
主要特性:(1).使用简单  (2).可自动预取新数据  (3).可选择多种缓存算法(包括FIFO、LIFO、LRU、MRU、LFU、MFU等15种)或自定义缓存算法  (4).省流量性能佳(有且仅有一个线程获取数据)  (5).支持不同类型网络处理  (6)缓存可序列化到本地  缓存可从文件中恢复  (7).扩展性强  (8). 包含map的大多数接口

 

缓存类关系图如下:其中HttpCache为后续计划的http缓存

android imagecache extend

 

二. 公用的view
1. 下拉刷新及滚动到底部加载更多的Listview
使用见: 下拉刷新及滚动到底部加载更多listview的使用
主要特性:(1). 可自定义下拉响应事件(如下拉刷新)  (2).可自定义滚动到底部响应的事件(如滑动到底部加载更多)  (3).可自定义丰富的样式  (4).高效(若下拉样式关闭不会加载其布局,同listView效率一致) (5). 丰富的设置

效果图

dropdown list view demo

 

2. 滑动一页(一个Item)的Gallery
使用及实现原理见:滑动一页(一个Item)的Gallery的使用
效果图

android gallery    android gallery

 

3. 滑动到底部或顶部响应的ScrollView
使用及实现原理见: 滚动到底部或顶部响应的ScrollView使用
效果图

android on bottom scrollview

 

三. 工具类

具体介绍可见:Android常用工具类

目前包括HttpUtils、DownloadManagerPro、ShellUtils、PackageUtils、PreferencesUtils、JSONUtils、FileUtils、ResourceUtils、StringUtils、ParcelUtils、RandomUtils、ArrayUtils、ImageUtils、ListUtils、MapUtils、ObjectUtils、SerializeUtils、SystemUtils、TimeUtils。

 

1. Android系统下载管理DownloadManager使用
使用示例见:Android系统下载管理DownloadManager功能介绍及使用示例
功能扩展Android下载管理DownloadManager功能扩展和bug修改

 

2. Android APK root权限静默安装
使用示例见:Android APK root权限静默安装

 

3. Android root权限

直接调用ShellUtils.execCommand方法

 

4. 图片工具类
(1)Drawable、Bitmap、byte数组相互转换; (2)根据url获得InputStream、Drawable、Bitmap见ImageUtils

更多工具类介绍见Android常用工具类

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

79 thoughts on “Android公共库——图片缓存 网络缓存 下拉及底部更多ListView 公共类

  1. Pingback: Android开源项目分类汇总【畜生级别】 | forlong401的分享

  2. Pingback: android开源框架集锦 最丰富的开源 - 合智社区

  3. Pingback: Android开源项目分类汇总 | 科技杂谈

  4. Pingback: 海上钢琴师

  5. Pingback: Android开源项目分类汇总 | 知识库

  6. Pingback: Android开源项目分类汇总iSmart Studio | iSmart Studio

  7. Pingback: android开源项目金库分类汇总_学习必备 | Android开源 | android学习 – android开源码 – 移动互联网

  8. Pingback: Android开源项目汇总列表(二) | 互联网的点点滴滴

  9. 主题不是很对,没有说图片的处理方式啊!那样的话,存取的时候,不管是什么样的情况都好处理,就是不知道在加载的时候怎样的机型优化的处理,尤其是打大点的图片的处理机制,android中没有太好的处理机制,收到额内存卡本身的存取是有限制的,不知道作者有没有这样的经验呢?如果有的话,可以给我们写下你的真实体验代码实例,通过交流这样的话,技术才能更好的长进,互动多了,这样的学习团体才能很好的成长的。谢谢!

      • 谢谢你的回复,我学习电脑比较晚了,才学会一点点的盲打,现在是学习java 知识,学习android开发,指法的练习,英语的学习同时进行,体谅了,错别字,我可能心有点急吧,我今年27岁了,去年七月分接触的java,看来一个多月的视频,学习了些web 方面的知识,html、 xml、 http就上手做android了,先找了份工作,学习着,最近才买了本android的书,想系统的学习android的知识都有哪些,感觉自己的学习方法有问题怎么的,总感觉效率很低,一天学习不到什么,向你请教下学习的经验,看到你的回信很高兴,教教我呗,交个朋友。

        • 有一定的Java基础后,可以像你一样找本Android简单介绍的书看看。Android本身提供不少简单的示例,前期你可以先学这些事例,在结构和规范上了解后,可以自己试着做些小应用,通过实际应用练手能快速成长,不会的google查,有些点不懂的集中时间攻破。比较重要的是学习过程中你要多总结这样能快速将自己的知识形成一个体系。不懂并且google不到的问题你可以在这里留言问我,不是google明显能得到答案的我都会回复。

        • 恩,谢谢你,我现在在做的别人写好的一个app,现在就是在改些bug,我觉得应该快速的把书看一遍,大概了解下,然后再动手写,那样的话,好点,我觉得知识点挺多的,比如说多屏幕的适配在android中就是一个点,市面上的不同尺寸和分辨率的手机太多了,不可能做到每个手机上都能行的,指点就没有ios好,每个应用中不一定都会用到四大组件的,我觉得最难的就是要控制好线程加载数据和展现的业务逻辑,怎么去用,我一直在纠结一个菜鸟级别的问题,是先看呢还是直接去写呢? 你平时学习的时候是怎么样的去做呢?要是有好的学习方法的话,给我传授下,毕竟时间短,对计算机方面的编程的学习,方法不一定正确,以我以前的学习经验无论是什么主要的是你的学习方法了,谢谢你,看到我的留言的话,希望你能给出写建议,关于学习编程的针对android也行,谢谢!