虽然调用摄像头拍照既方便又快捷,但并不是每一次我们都需要去当场拍一张照片的。 因为每个人的手机相册里应该都会存有许许多多张照片,直接从相册里选取一张现有的照 片会比打开相机拍一张照片更加常用。一个优秀的应用程序应该将这两种选择方式都提供给 用户,由用户来决定使用哪一种。下面我们就来看一下,如何才能实现从相册中选择照片的 功能。

还是在 ChoosePicTest 项目的基础上进行修改,首先编辑 activity_main.xml 文件,在布局 中添加一个按钮用于从相册中选择照片,代码如下所示:

android:orientation="vertical" >

然后修改 MainActivity 中的代码,加入从相册选择照片的逻辑,代码如下所示:

public class MainActivity extends Activity {

……

private Button chooseFromAlbum;

@Override

protected void

onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

……

chooseFromAlbum = (Button) findViewById(R.id.choose_from_album);

chooseFromAlbum.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

//创建File对象,用于存储选择的照片

File outputImage = new

File(Environment. getExternalStorageDirectory(), "output_image.jpg");

try {

if (outputImage.exists())

{

outputImage.delete();

}

outputImage.createNewFile();

} catch (IOException e) {

e.printStackTrace();

}

imageUri = Uri.fromFile(outputImage);

Intent intent = new Intent("android.intent.action.

intent.setType("image/*");

intent.putExtra("crop", true);

intent.putExtra("scale",

true);

intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

startActivityForResult(intent, CROP_PHOTO);

});

}

……

}

可以看到,在 Choose From Album 按钮的点击事件里我们同样创建了一个 File 对象,用 于 存 储 从相 册 中 选 择 的 图 片。 然 后 构 建 出 一 个 Intent 对 象 , 并将 它 的 action 指 定 为 android.intent.action.GET_CONTENT。接着给这个 Intent 对象设置一些必要的参数,包括是 否允许缩放和裁剪、图片的输出位置等。最后调用 startActivityForResult()方法,就可以打开 相册程序选择照片了。

注意在调用 startActivityForResult() 方法的时候,我们给第二个参数传入的值仍然是CROP_PHOTO 常量,这样的好处就是从相册选择好照片之后,会直接进入到 CROP_PHOTO

的 case 下将图片显示出来,这样就可以复用之前写好的显示图片的逻辑,不用再编写一遍了。

现在将程序重新运行到手机上,然后点击一下 Choose From Album 按钮,就会打开相册

程序,如图 8.16

所示。

图   8.16

然后随意选择一张照片就可以对它进行裁剪,如图 8.17 所示。

图   8.17

最后点击完成,回到我们程序的界面,就会看到裁剪后的图片已经显示出来了,如图8.18

所示。

图   8.18

调用摄像头拍照以及从相册中选择照片是很多 Android 应用都会带有的功能,现在你已

经将这两种技术都学会了,将来在工作中如果需要开发类似的功能,相信你一定能轻松完成 吧。不过目前我们的实现还不算完美,因为某些照片即使经过裁剪后体积仍然很大,直接加 载到内存中有可能会导致程序崩溃。更好的做法是根据项目的需求先对照片进行适当的压缩,然后再加载到内存中。至于如何对照片进行压缩,就要考验你查阅资料的能力了,这里 就不再展开进行讲解。

swift -从相册中选择照片并上传

选择本地图片并上传是应用开发中一个比较常见的功能.        原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/det ...

Swift - 从相册中选择视频(过滤掉照片,使用UIImagePickerController)

(本文代码已升级至Swift4) 有时我们需要从系统相册中选择视频录像,来进行编辑或者上传操作,这时使用 UIImagePickerController 就可以实现. 默认情况下,UIImagePic ...

jsp实现仿QQ空间新建多个相册名称,向相册中添加照片

工具:Eclipse,Oracle,smartupload.jar:语言:jsp,Java:数据存储:Oracle. 实现功能介绍: 主要是新建相册,可以建多个相册,在相册中添加多张照片,删除照片,删 ...

Android--从相册中选取照片并返回结果

启动系统相册去选择图片 //从相册中选取的方法 private void selectPhoto(){ Intent intent = new Intent(Intent.ACTION_PICK); ...

Android 打开相册拍照选择多张图片显示

添加依赖: compile 'me.iwf.photopicker:PhotoPicker:0.1.8' compile 'com.jaeger.ninegridimageview:library:1 ...

Android从相册中获取图片以及路径

首先是相册图片的获取: private final String IMAGE_TYPE = "image/*"; private final int IMAGE_CODE = 0; ...

android 相机拍照后选择照片编辑,相片编辑界面直线形状会显示锯齿状

因为 decode 出来的图片太小,小于屏幕.所以,显示的时候 会把图片略微放大,导致直线形状会显示锯齿状.   能够改动getScreenImageSize 方法中的size 的大小,比方能够把13 ...

从系统相册中选择GIF图片上传到服务器

-(void)assetPickerController:(ZYQAssetPickerController *)picker didFinishPickingAssets:(NSArray *)as ...

HTML5 拖放:在相册中对照片进行排序

1. [代码]index.html

随机推荐

gradle环境配置、

话不多说,直接上流程. 1.下载 gradle.zip文件,我以为已经为大家准备好了各个版本的下载地址. 链接: http://pan.baidu.com/s/1hqjIVlE 密码: 8ccb 本人 ...

维克里拍卖 Vickrey auction

https://en.wikipedia.org/wiki/Vickrey_auction 维克里拍卖(Vickrey auction),即次价密封投标拍卖(Second-price sealed-b ...

Python对整形数字进行加密和解密

# -*- coding:utf-8 -*- __author__ = 'Ray' class Encryption: """整形数字简单的一个加密/解密算法" ...

Codeforce 221 div1

A 只要打个表就能发现,1,6,8,9的所有排列就可以产生0~6的余数了... 所以...走不下去的时候一定要打表... #define rep(i,n) for(int i=0 ; i

Weex-进阶笔记二

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; color: #945200 } p.p2 { margin: 0.0p ...

利用h5 meta 头标签设置og属性进行帖子分享图片时而有时而无

根据异常自定义处理逻辑(【附】java异常处理规范)

▄︻┻┳═一『异常捕获系列』Agenda: ▄︻┻┳═一有关于异常捕获点滴,plus我也揭揭java的短 ▄︻┻┳═一根据异常自定义处理逻辑([附]java异常处理规范) ▄︻┻┳═一利用自定义异常来 ...

4.Python爬虫入门四之Urllib库的高级用法

1.设置Headers 有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们需要设置一些Headers 的属性. 首先,打开我们的浏览 ...

android点击选择相册,android: 从相册中选择照片相关推荐

  1. android 点击图片事件,android图文混排点击事件

    图文混排顾名思义就是把文字和图片混合排列在一起,比较简单的需求我们也可以通过TextView和ImageView配合使用来达到目的,但是遇到稍微复杂一些的情况这种方法就不适用了. 做这样一个按钮: 对 ...

  2. Android点击无响应,Android Studio无响应打不开的解决办法

    最近谷歌发布了Android Studio,下载安装之后,在使用时发现一个问题,那就是发布无响应且无法启动,也就是点击Android图标的时候没有任务反应,我想说的是你需要重新配置一下环境~ 因为这个 ...

  3. android存储文件数据恢复,安卓手机内置储存中的照片误删怎么恢复

    科技迅速发展随之而来的是人们生活习惯的改变,手机从一个简单的交流工具,变成生活中必备品,手机购物.手机支付.手机传送文件浏览网页.手机分享视频.手机拍照.手机里面满满的簇拥了太多的东西,定期清理的必然 ...

  4. android 点击空白退出,Android 点击空白处隐藏键盘

    方法一:使用android的分发机制(代码稍微有点多) /** * 实现点击空白处,软键盘消失事件 * @param ev * @return */ @Override public boolean  ...

  5. android 点击图标重启,Android应用第一次安装成功点击“打开”后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法...

    Android应用第一次安装成功点击"打开"后Home键切出应用后再点击桌面图标返回导致应用重启问题的解决方法 if((getIntent().getFlags() & I ...

  6. android 点击返回顶部,Android scrollToTop实现点击回到顶部(兼容PullTorefreshScrollview)...

    前言 最近因为项目组需求,特研究了一下"回到顶部"效果,即:页面里有scrollview,内容很多,当滑动到页面下面或者更深时,需要回到顶部,即可点击出现的按钮,省得回滑N久.我没 ...

  7. android 点击事件消费,Android View事件分发和消费源码简单理解

    Android View事件分发和消费源码简单理解 前言: 开发过程中觉得View事件这块是特别烧脑的,看了好久,才自认为看明白.中间上网查了下singwhatiwanna粉丝的读书笔记,有种茅塞顿开 ...

  8. android点击出现菜单,Android 点击按钮弹出菜单

    效果图: 1.创建menu文件夹,新建main.xml文件 android:id="@+id/add" android:title="添加" /> and ...

  9. android点击展开全文,Android显示全文折叠控件使用方法详解

    一般列表里文字太多的一个折叠效果的空间,效果图如下. 当文字超过设定的行数后就折叠,小于设定行数不显示展开按钮.下面上代码. 先看布局文件: android:layout_width="wr ...

  10. android点击展开内容,Android编程实现Listview点击展开和隐藏的方法

    在android的开发中,listview是应用最广泛的组件之一.虽然已经启动了recycleview,但许多项目仍在使用listview,爱站技术频道小编给大家带来了Android编程实现Listv ...

最新文章

  1. sublime text3 运行lua_[电脑常识] 用这4个系统垃圾清理软件,让电脑操作系统运行如飞 !...
  2. uni-app 更新包提示HTML5+Runtime缺少升级包manifest.json中配置的模块:payment
  3. python data frame_Python dataframer包_程序模块 - PyPI - Python中文网
  4. django的contenttype表
  5. java之父_java之父:被下载达7000万次的编程视频教程,你还没有看过?
  6. 与Win8之磁盘活动时间100%斗争心得
  7. 北漂九年 ,雷军终于买房了:壕掷52亿元
  8. 一次追踪h5游戏中google广告的经历
  9. 微信小程序一定要设置服务器域名,微信小程序 设置域名 必须是https么
  10. 【保姆级教程】三角网生成库---triangle快速入门及使用说明(再不会就说不过去了啊兄弟)
  11. OSChina 周六乱弹 ——是不是傻!是不是傻!
  12. cocos2dx游戏-可爱的小精灵的各种用法大全
  13. 中英文标点符号切换的组合键_最全的键盘各键及组合键功能说明,建议收藏
  14. C++17类型std::variant介绍
  15. Design the Web: Add a Twitter Timeline 设计网页:添加Twitter时间轴 Lynda课程中文字幕
  16. (PPT抠图)设置透明色/删除背景
  17. HTML如何制作百度首页?代码是什么
  18. 原链YCC落地应用之仓单金融
  19. Oracle物化视图的使用总结
  20. ASP第一章IIS发布站点

热门文章

  1. nes网页服务器怎么改ip,virtuanes联机(怎么用VirtuaNES联网)
  2. 手动打造优盘杀毒伴侣
  3. php似水流年同学录,似水年华同学录源码附教程
  4. 《Dive into Windbg系列》Explorer无法启动排查
  5. 贵州师范大学本科毕业论文答辩和论文选题PPT模板
  6. iOS-系统相关参数(版本、机型设备等)
  7. USBKiller(U盘病毒专杀) v2.2 正式版下载
  8. 三星在5G设备市场站稳脚跟,提前研发6G挑战华为和诺基亚等
  9. Linux 中 ss 命令的使用实例
  10. python雪花曲线实验报告_探究“雪花”曲线