大家好!过完年回来到现在差不多一个月没写文章了,一是觉得不知道写哪些方面的文章,没有好的题材来写,二是因为自己的一些私事给耽误了,所以过完年的第一篇文章到现在才发表出来,2014年我还是会继续在CSDN上面更新我的博客,欢迎大家关注一下,今天这篇文章主要的是介绍下开源库StickyGridHeaders的使用,StickyGridHeaders是一个自定义显示数据表格带部分和标题的Android库,就部分是显示数据表格项之间的分隔,头就是固定在显示数据表格顶部的标题,类似一些安卓手机联系人的效果,StickyGridHeaders的介绍在https://github.com/TonicArtos/StickyGridHeaders,与此对应也有一个相同效果的自定义ListView带部分和标题的开源库https://github.com/emilsjolander/StickyListHeaders,大家有兴趣的可以去看下,我这里介绍的是StickyGridHeaders的使用,我在Android应用方面看到使用StickyGridHeaders的不是很多,而是在Iphone上看到相册采用的是这种效果,于是我就使用StickyGridHeaders来仿照Iphone按照日期分隔显示本地图片
我们先新建一个Android项目StickyHeaderGridView,去https://github.com/TonicArtos/StickyGridHeaders下载开源库,为了方便浏览源码我直接将源码拷到我的工程中了
包com.example.stickyheadergridview;/* * * @blog http://blog.csdn.net/xiaanming * * @author xiaanming * */公开课GridItem {/* * *图片的路径 */私人字符串路径;/* * *图片加入手机中的时间,只取了年月日 */私人时间字符串;/* * *每个项目对应的HeaderId */私人int headerId; 公共GridItem(字符串,字符串时间){ 超级(); 这一点。路径=路径; 这一点。时间=时间; } 公共字符串getPath () { 返回路径; } 公共空间setPath (String路径){ 这一点。路径=路径; } 公共字符串取得时间(){ 返回时间; } 公共空间凝固时间(String) { 这一点。时间=时间; } 公共int getHeaderId () { 返回headerId; } 公共空间setHeaderId (int headerId) { 这一点。headerId=headerId; } }
包com.example.stickyheadergridview; 进口android.content.ContentResolver; 进口android.content.Context; 进口android.content.Intent; 进口android.database.Cursor; 进口android.net.Uri; 进口android.os.Environment; 进口handler; 进口android.os.Message; 进口android.provider.MediaStore;/* * *图片扫描器 * * @author xiaanming * */公开课映象{ 私人上下文mContext; 公共映象(上下文语境){ 这一点。mContext=上下文; }/* * *利用ContentProvider扫描手机中的图片,将扫描的光标回调到ScanCompleteCallBack *接口的scanComplete方法中,此方法在运行在子线程中 */公共空间scanImages(最终ScanCompleteCallBack回调){ 最终处理程序mHandler=new处理程序(){ @Override 公共空间handleMessage(消息味精){ super.handleMessage(味精); callback.scanComplete((光标)msg.obj); } }; 新线程(新Runnable () { @Override 公共空间run () {//先发送广播扫描下整个sd卡 mContext。sendBroadcast(新意图( Intent.ACTION_MEDIA_MOUNTED, Uri。解析(“文件://? Environment.getExternalStorageDirectory ()))); Uri mImageUri=MediaStore.Images.Media.EXTERNAL_CONTENT_URI; ContentResolver mContentResolver=mContext.getContentResolver (); 光标mCursor=mContentResolver。查询(mImageUri,空,空,空,MediaStore.Images.Media.DATE_ADDED);//利用处理器通知调用线程 消息味精=mHandler.obtainMessage (); 味精。obj=mCursor; mHandler.sendMessage(味精); } }) .start (); }/* * *扫描完成之后的回调接口 * */公共静态界面ScanCompleteCallBack { 公共空间scanComplete(鼠标光标); } }Android使用开源库StickyGridHeaders来实现带部分和标题的显示数据表格显示本地图片效果