android开发——从相册中选择图片不裁剪
2015-10-15 11:46
330 查看
问题:
在郭神的第一行代码中,第8章的从相册中选择图片这块,从相册选一张裁剪后显示到屏幕。但是运行后会发现从相册选了图片后,没有弹出裁剪的界面,直接返回。
方案:
查找原因时,发现SD卡路径下的output_image.jpg是一个0字节文件。所以
这张图片没有生成。然后我觉得是向系统发送选择照片的意图出了问题。我好奇的查看了下系统的图库应用(gallery)源码的清单文件意图过滤器这块,果然有发现:
?
发现这里用android.intent.action.PICK的action,可以选择图片或是视频。而书里是android.intent.action.GET_CONTENT。
修改后成功跳转到裁剪界面。
再者一个问题,我用
Uri selectedImage = data.getData();//获取系统返回的照片的Uri
输出后发现这并不是一个绝对路径。这对于我们设置到ImageVew上或上传到网络上等 是不正确的。
demo:
我这里给出个从相册中选择图片不裁剪的demo,告诉大家如何获得绝对路径,完美运行。
首先新建一个项目,编辑activity_main.xml 文件,在布局中添加一个按钮用于从相册中选择照片,一个imageview。代码如下所示:
?
然后修改 MainActivity 中的代码,加入从相册选择照片的逻辑,代码如下所示:
?
解析:
从 MainActivity可以发现 从相册中选择图片这功能只有两步:
第一步:向系统发送选择照片的意图。
?
第二步:处理onActivityResult系统返回的结果。
?
系统会返回一个选择照片的Uri,Uri selectedImage = data.getData();然后定义String[] filePathColumn = { MediaStore.Images.Media.DATA }; 在filePathColumn 中查找指定Uri路径。通过cursor.getString(columnIndex); 获取照片绝对路径 。
在郭神的第一行代码中,第8章的从相册中选择图片这块,从相册选一张裁剪后显示到屏幕。但是运行后会发现从相册选了图片后,没有弹出裁剪的界面,直接返回。
方案:
查找原因时,发现SD卡路径下的output_image.jpg是一个0字节文件。所以
这张图片没有生成。然后我觉得是向系统发送选择照片的意图出了问题。我好奇的查看了下系统的图库应用(gallery)源码的清单文件意图过滤器这块,果然有发现:
?
<code class = "hljs" xml= "" ><intent-filter> |
修改后成功跳转到裁剪界面。
再者一个问题,我用
Uri selectedImage = data.getData();//获取系统返回的照片的Uri
输出后发现这并不是一个绝对路径。这对于我们设置到ImageVew上或上传到网络上等 是不正确的。
demo:
我这里给出个从相册中选择图片不裁剪的demo,告诉大家如何获得绝对路径,完美运行。
首先新建一个项目,编辑activity_main.xml 文件,在布局中添加一个按钮用于从相册中选择照片,一个imageview。代码如下所示:
?
?
从 MainActivity可以发现 从相册中选择图片这功能只有两步:
第一步:向系统发送选择照片的意图。
?
?
相关文章推荐
- android 混淆参数 说明 转的
- Android中使用代码截图的各种方法总结
- Android MIFARE读写器协议详解1
- Android成长笔记(2)——程序结构分析
- Android 双进程Service常驻后台,无惧“一键清理”
- Android_02_关于SharePreferences的使用
- android 打包出现错误
- Android RecycleView 使用技巧和心得
- Android Selector 与 Shape 基本用法
- Android中Bitmap和Drawable
- 专题 - Web应用->Web应用中适配不同屏幕
- android获取SDCard中照片并按照时间顺序显示
- Android Bitmap实战技巧
- android:强大的图片下载和缓存库Picasso
- android studio -- 图片应该放在drawable还是mipmap?
- Android -- 使用inBitmap要注意的地方
- 天龙txt阅读器
- Android下的.so库使用
- Android授权登录新浪微博获取用户个人信息
- Android Studio中使用Git进行版本控制