android 自定义相册 像微信相册一样的形式

阅读: 评论:0

android 自定义相册  像微信相册一样的形式

android 自定义相册 像微信相册一样的形式

  在android中  我们常常会用到照片以此来上传图片  然后调用系统相册时   由于种种原因 而无法满足产品需求   ,此时  我们将会用到自定义相册    ,相册样式由产品UI决定,

而我们只需要获取相册信息 ,

 在android中  图片都有存入一个数据库中 共享给我们使用

第一 : 我们可能需要拿到所有相册的文件夹名字及个数 

ContentResolver cr = ContentResolver();
String selection = "0=0) group by (" + Media.BUCKET_DISPLAY_NAME;
String[] projection = { Media.BUCKET_DISPLAY_NAME , "count(*) as image_count" };
Cursor cursor = cr.query(Media.EXTERNAL_CONTENT_URI, projection, selection, null, Media._ID + " desc");
获取到文件夹名称和内容总数

将其放入一个集合中

veToFirst()){do{BucketDisplay bucketDisplay = new BucketDisplay();String bucketDisplayName = ColumnIndex(Media.BUCKET_DISPLAY_NAME));bucketDisplay.name = unt = ColumnIndex("image_count"));<pre name="code" class="java"><pre name="code" class="java">   //插入获取默认图代码<span style="font-family: Arial, Helvetica, sans-serif;">  /*  此处插入下面查询默认图标代码  */</span>
bucketDisplays.add(bucketDisplay);
}while (veToNext());

 
 


     如果需要 为每个文件夹设置默认图标 则可通过文件夹名称  查询图片路径

String[] defaltProjection = { Media._ID , Media.DATA };//获取文件夹默认图片信息
Cursor defaltCursor = cr.query(Media.EXTERNAL_CONTENT_URI, defaltProjection, Media.BUCKET_DISPLAY_NAME + "='" + bucketDisplayName + "'", null, Media._ID + " desc limit 1" );//默认图只要一个   所以只查询一个最新的veToFirst()){int _id = ColumnIndex(Media._ID));String bigPath = ColumnIndex(Media.DATA));//该路径为大图的路径  有时可能我们会去获取缩略图,所以需要查看缩略图//获得该图片缩略图String[] projectionThumb = { Thumbnails.DATA };Cursor cursorprojectionThumb = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projectionThumb, Thumbnails.IMAGE_ID + "=" +_id, null, null);//获取缩略图地址String path = null;veToFirst()){//存在缩略图path = ColumnIndex(Thumbnails.DATA));}if(cursorprojectionThumb != null){cursorprojectionThumb.close();}if(TextUtils.isEmpty(path)){//如果不存在缩略图path = bigPath;}bucketDisplay.firstUrl = path;}<pre name="code" class="java">    if(defaltCursor != null){defaltCursor.close();}

 

当你获取了所有文件夹的信息后   此时你就会显示你的图片信息   由于相册图片可能会很多  建议使用分页查询图片相册信息 

//通过文件名称  获取图片信息列表

       /*** 获取文件夹  及文件夹下的文件信息* @param bucketDisplayName 文件夹名字<pre name="code" class="java">        * @param id  为图片id <span style="font-family: Arial, Helvetica, sans-serif;">*/</span>

public List<ImageInfo> getImagesByBucketDisplayName(String bucketDisplayName , int id){List<ImageInfo> imageInfos = new ArrayList<ImageInfo>(); 
ContentResolver cr = ContentResolver();String[] projection = { Media._ID , Media.DATA };String selection = null;if(TextUtils.isEmpty(ucketDisplayName)){
//没有传入文件夹名称 查询所有图片信息if(id > 0 ){selection = Media._ID + "<" + id;}}else{if(id > 0){selection = Media.BUCKET_DISPLAY_NAME + "='" + bucketDisplayName + "' and " + Media._ID + "<" + id;}else{selection = Media.BUCKET_DISPLAY_NAME + "='" + bucketDisplayName + "'";}}Cursor cursor = cr.query(Media.EXTERNAL_CONTENT_URI, projection, selection, null, Media._ID + " desc limit " + limit);veToFirst()){do{ImageInfo imageInfo = new ImageInfo();
//为图片信息对象int _id = ColumnIndex(Media._ID));imageInfo.setId(_id);//获得该图片缩略图 String[] projectionThumb = { Thumbnails.DATA };Cursor cursorprojectionThumb = cr.query(Thumbnails.EXTERNAL_CONTENT_URI, projectionThumb, Thumbnails.IMAGE_ID + "='" +_id+ "'", null, null); 
String path = null;veToFirst()){
//存在缩略图path = ColumnIndex(Thumbnails.DATA));} 
if(cursorprojectionThumb != null){cursorprojectionThumb.close();} 
String bigPath = ColumnIndex(Media.DATA));if(TextUtils.isEmpty(path)){path = bigPath;}imageInfo.setPath(path);imageInfo.setBucketDisplayName(bucketDisplayName);imageInfo.setBigPath(bigPath);imageInfos.add(imageInfo);
}while (veToNext());}
if(cursor != null){cursor.close() ;
}
if(cr != null){cr = null ;
}
return imageInfos;}

 


  拿到这些  你就可以 随意定义你的相册了  



本文发布于:2024-01-28 08:29:54,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17064018026117.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:相册   自定义   形式   android   像微信
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23