Android系统相机拍照显示优化实例:实时与存储后
140 浏览量
更新于2024-09-04
收藏 86KB PDF 举报
本文将详细介绍如何在Android应用中实现打开系统相机并拍摄照片的两种不同显示方法。首先,我们将关注activity_main.xml中的布局设置,这是一个关键部分,它定义了用户界面元素,包括两个按钮和一个用于显示照片的ImageView。
activity_main.xml布局如下:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btnOpenCamera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="拍照立即显示" />
<Button
android:id="@+id/btnSavePhoto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="60dp"
android:text="拍照存储后显示" />
<ImageView
android:id="@+id/ivShowPicture"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerHorizontal="true"
android:layout_marginTop="130dp" />
</RelativeLayout>
```
在这个布局中,我们有两个按钮,分别对应不同的拍照行为:`btnOpenCamera`用于即时显示拍照结果,适合于小图片场景,而`btnSavePhoto`则允许用户保存照片后再显示,适合于高质量图片的处理。`ivShowPicture`是ImageView,用于显示拍摄的照片。
在`MainActivity.java`文件中,我们将实现这两个按钮的点击事件,调用系统的相机API来拍照。对于即时显示,可能通过`ACTION_IMAGE_CAPTURE_SECURE`或`ACTION_IMAGE_CAPTURE`意图启动相机,然后利用`setResult()`方法传递拍摄的照片数据到当前Activity。这通常会导致系统自动关闭相机并回到原Activity,这时可以使用`onActivityResult()`方法接收返回的照片数据,并在ImageView中显示。
另一种方式是,当用户点击`btnSavePhoto`时,先调用相机拍摄照片,然后将照片保存到设备的某个位置(如私有文件夹),接着调用`startActivityForResult()`与特定的Activity配合,让用户选择保存路径或者预览图片,最后在回调的`onActivityResult()`中读取并显示已保存的照片。
这两种方法的区别在于即时显示可能导致图像质量受限,因为系统可能需要对大尺寸图片进行压缩,而保存后再显示则提供了更好的控制和灵活性。开发者需要根据实际需求选择合适的显示策略。同时,别忘了遵循Android权限管理规则,确保在运行时获得了访问相机的权限。
2016-11-21 上传
2017-09-30 上传
2017-12-22 上传
2020-08-27 上传
2014-11-19 上传
2023-05-28 上传
2012-04-18 上传
2016-06-12 上传
weixin_38660295
- 粉丝: 6
- 资源: 910
最新资源
- Haskell编写的C-Minus编译器针对TM架构实现
- 水电模拟工具HydroElectric开发使用Matlab
- Vue与antd结合的后台管理系统分模块打包技术解析
- 微信小游戏开发新框架:SFramework_LayaAir
- AFO算法与GA/PSO在多式联运路径优化中的应用研究
- MapleLeaflet:Ruby中构建Leaflet.js地图的简易工具
- FontForge安装包下载指南
- 个人博客系统开发:设计、安全与管理功能解析
- SmartWiki-AmazeUI风格:自定义Markdown Wiki系统
- USB虚拟串口驱动助力刻字机高效运行
- 加拿大早期种子投资通用条款清单详解
- SSM与Layui结合的汽车租赁系统
- 探索混沌与精英引导结合的鲸鱼优化算法
- Scala教程详解:代码实例与实践操作指南
- Rails 4.0+ 资产管道集成 Handlebars.js 实例解析
- Python实现Spark计算矩阵向量的余弦相似度