二十、修改头像(1)----选择相册
来源:互联网 发布:python 获取当前周数 编辑:程序博客网 时间:2024/06/05 09:58
点击“从手机相册选择”图片后,打开相册列表,选择一个相册,第一个相册是所有照片。
这部分有两个点需要注意,一个是获取所有相册和显示相册图片时容易造成的OutOfMemery异常。
一、获取所有相册
由于这个过程不是瞬间能够马上完成的,为了防止程序卡死,采用异步的方式加载,封装成一个工具类,加载完成后回调。
使用起来就很简单:
// 读取相册AlbumUtil.getAllAlbum(this, new AlbumUtil.AlbumListener() { @Override public void onComplete(List<AlbumInfo<String>> albumInfoList) { // 加载数据到ListView mListView.setAdapter(new AlbumAdapter(albumInfoList, AlbumActivity.this)); }});二、加载图片
加载图片在adapter中:
String path = data.get(position).albumList.get(0);vh.albumImageView.setImageBitmap(BitmapUtil.createBitmap(path));注意,如果不做压缩直接显示图片,很容易就产生OutOfMemery异常。所以我封装了一个获取图片的方法,把图片做一定压缩再显示。
public static Bitmap createBitmap(String path) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inPreferredConfig = Bitmap.Config.RGB_565; // 比ARGB_8888省内存 options.inJustDecodeBounds = true; // 设置图片可以被回收 Bitmap bitmap1; bitmap1 = BitmapFactory.decodeFile(path, options); options.inJustDecodeBounds = false; int w = options.outWidth; int maxW = 128; int be = 1; if (w > maxW) { be = w / maxW + 1; } options.inSampleSize = be; // 设置位图缩放比例 InputStream is = null; try { is = new FileInputStream(path); } catch (FileNotFoundException e) { e.printStackTrace(); } Bitmap bitmap2 = BitmapFactory.decodeStream(is, null, options); // 比decodeResource方法节省内存 if (bitmap1 != null) { bitmap1.recycle(); } return bitmap2;}
效果如下:
参考:
http://blog.csdn.net/shuaihj/article/details/8808409
1 0
- 二十、修改头像(1)----选择相册
- 实现显示圆形头像及选择相册相机修改头像
- android头像选择(拍照,相册,裁剪)
- android头像选择(拍照,相册,裁剪)
- html5调用相册修改头像
- Android 头像(拍照,相册)选择后裁剪功能
- iOS 修改头像,几行代码实现从相册选择照片
- 从手机相册或拍照选择头像
- Android头像选择(手机和相册)
- android圆形头像:相机裁剪+相册选择
- Android头像上传/拍照/从相册选择Demo(个人信息模块会用到)
- Android调用摄像头拍照和从相册中选择(上传、更换头像)
- Android之圆形头像(实现相机拍摄+相册选择+图片裁剪功能)
- Android开发--通过相册或拍照选择头像
- Android开发--通过相册或拍照选择头像
- Android开发--通过相册或拍照选择头像
- Android开发--通过相册或拍照选择头像
- 用户头像从相机或者相册选择并剪裁
- oracle hint语句
- Linux文件系统相关
- XCode7报 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is inse
- Java学习---文件操作的一些常见问题!
- mac sublime3快捷键
- 二十、修改头像(1)----选择相册
- codeforces 706c
- java 继承中成员变量和方法的问题
- JAVA SimpleDateFormat 中英文时间格式化转换
- 移动端兼容性问题
- 华为机试题
- Catch That Cow
- Android自定义View的官方套路
- 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。