Android Camera做全屏预览之最简单方法

M厂开发五部:刘 博

一、全屏预览与非全屏预览的区别

对于大多数人来说,我们看电影、玩游戏等都喜欢全屏,我们之所以喜欢全屏的一个主要原因就是全屏的感觉比非全屏看起来的感觉爽,因为画面看起来变大了,有些微小的东西也能够看清楚了。即使有时候不能够去全屏欣赏,我们也会尽量去把画面调到最大化去享受。

20世纪80年代到20世纪末,绝大部分人的生活质量都不怎么好,他们看电视都使用的是屏幕25寸以下的黑白电视机或画面不怎么好的彩色电视机,甚至有的家庭都没有电视机。但是随着社会的发展,科技的进步,人们为了追求好的生活质量,我们可以看到当今社会大部分家庭所使用的电视机都是超大屏幕的,屏幕尺寸大到50寸以上,并且流行的电视机都是超大屏幕。因为消费者意识到屏幕大可以带给他们宽阔美好的视觉感。那么我们手机的Camera做全屏预览是否也是因为上述的原因呢?

今天,智能手机深受广大消费者的喜爱,尤其是对于年轻的消费者。Camera是智能手机的亮点之一, Camera做成全屏预览就能够给手机增加亮点。所谓Camera的全屏预览就是Camera的预览界面占据手机的整个屏幕,否则,就是非全屏预览。首先看一下下面两张图片所示的效果:

图1:非全屏预览界面

图2:全屏预览界面

图1和图2分别是非全屏预览Camera和全屏预览Camera去预览同一个界面所显示的不同效果,它们的不同点就在于非全屏预览比全屏预览显示的预览界面小。具体体现在图1和图2的最右侧,非全屏预览图片最右侧看不到Camera的预览界面,而全屏预览图片整个屏幕都可以看得到Camera的预览界面。那么Camera用非全屏预览和全屏预览拍摄出来的照片有区别吗?答案是肯定的,继续使用图1和图2中的预览界面,用非全屏预览和全屏预览拍摄出来的照片如下:

图3:非全屏预览拍摄的照片

图4:全屏预览拍摄的照片

图3和图4分别展示的是用Camera非全屏预览和全屏预览拍摄出来的照片,我们明显可以看出非全屏预览拍摄的照片比全屏预览拍摄的照片短一点。同一个取景画面,同一个手机,唯一不同的就是手机的Camera一个是非全屏预览,一个是全屏预览,这也就是为什么两张照片大小不一样的原因之所在。

二、全屏预览与非全屏预览的本质差异解析

以我们OPPO的11071手机为例,手机的屏幕大小是:480x320。如果我们要去做全屏预览,那么我们至少要保证预览界面的长度大于等于480px,宽度大于等于320px;如果我们不做全屏预览,那么预览界面的长度或者宽度至少有一个是小于手机的对应长度或宽度,我们手机的预览界面实际上是有一部分没有去预览,默认为黑色显示。

图5:全屏预览数据图 图6:非全屏预览数据图

图5表示的效果是一个Camera全屏预览的预览数据图,手机的整个屏幕都会显示预览数据。也就是说,假如手机屏幕上没有任何图标的话,用户可以看到整个手机屏幕都显示的是预览的界面,可以参考图4,它的预览是占满整个手机屏幕的,本质上Camera的预览效果就是图4那样,所以它拍摄出来的照片才会像图4那样。

然而图6则显示的是一个Camera非全屏预览的预览数据图,手机屏幕的左侧大部分会显示预览数据,但手机屏幕右侧的小部分显示的是黑色。为什么会这样呢?因为那些黑色的部分是没有预览数据的,所以才会显示黑色。

图7非全屏预览数据显示效果

图7显示的就是一个屏幕480x320的Camera非全屏预览图,图的右侧显示的黑色。但是可能一个最大的疑问是我们在使用Camera的时候,为什么我们没有看到它显示出来黑色?和图1作对比,如果我们把图1上面的所有按钮UI效果去掉,那么图1的显示效果就和图7一模一样了。可能还有一个疑问是我们既然预览的时候屏幕上有一部分显示的是黑色,为什么我们拍摄出来的照片不显示那些黑色的部分,而是像图3那样?原因很简单,那是因为生成照片是按照预览的数据来生成的,而不是按照手机屏幕的大小去生成照片,因为有预览数据的只是图7中非黑色部分,黑色的那部分没有预览数据,所以生成的照片就不会有黑色那部分。

三、如何去做全屏预览?

如何去做全屏预览呢?很多人可能就说我们把camera.xml中的SurfaceView的android:layout_width属性和android:layout_height属性设置成“match_parent”不就可以了吗?Camera.xml的部分代码如下:

xmlns:android="/apk/res/android"

xmlns:camera="/

android camera 全屏,Android Camera做全屏预览之最简单方法.doc相关推荐

  1. Android通过屏幕方向和摄像头方向实现屏幕预览

    Android通过屏幕方向和摄像头方向实现屏幕预览 1. 前言 2. Android 的屏幕方向 2.1 什么是屏幕方向 2.2 为什么要获取或设置屏幕方向 2.3 如何获取与设置屏幕方向 2.3.1 ...

  2. android抖音切换实现,【Android 进阶】仿抖音系列之视频预览和录制(五)

    前言 大家好,在前几篇中,我们通过2种方式实现了仿抖音的翻页切换视频,仿抖音列表播放视频功能:这一篇,我们来说说视频的录制. 主流的视频录制,一般都采用的是FFmpeg 例如 腾讯短视频,由于FFmp ...

  3. 在 Apple 芯片设备上用 Android Studio?别忘了使用 Apple 芯片预览版!

    感谢大家通过微信等渠道为打造更好的 Android Studio 提供的诸多反馈,在这些反馈中,我们了解到 Android Studio 对于 Apple 芯片的支持一直备受期待.随着 Android ...

  4. android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧

    android ffmpeg 仿剪映播放器 剪辑视频 预览条 快速精准抽帧 由于本人想学习音视频相关的东西,所以找了剪映作为借鉴,通过仿照剪映的功能学习音视频相关的东西,所以有了这个项目 暂时这个项目 ...

  5. android camera预览帧,android camera2处理每一帧并显示其预览

    我使用 https://github.com/googlesamples/android-Camera2Basic,但尝试修改它,我可以访问每个帧,然后在surfaceview上绘制. 我明白了,我应 ...

  6. [FAQ11232][MT6592][Camera Drv]开机首次视频通话进入前摄预览黑屏

    [DESCRIPTION] (1)开机首次视频通话进入前摄预览黑屏 (2)92平台前摄无法连接CCT调试工具 [ROOT CAUSE] 开tsf功能,但是没有提供tsf参数. [SOLUTION]   ...

  7. 谷歌浏览器中全屏及跳过页面打印预览的设置

    1.首先在桌面创建一个谷歌浏览器的快捷方式: 2.打开浏览器>>然后打开"设置"菜单>>在"启动时"一项中选择"打开特定网页或 ...

  8. Android OpenCV使用4_双目摄像头双开两个预览界面,并获取当前帧图片

    本篇博客其实跟OpenCV也没什么多大关系,因为是同一个项目,博客就顺溜着写了. 在自研设备开发过程中,在项目研发过程中碰到了双目摄像头双开(一个普通摄像头,一个红外摄像头)并获取当前帧的这么一个需求 ...

  9. Android 外接基于UVC协议的摄像头并实现预览

    先来一段从网上找到的理论知识,对UVC协议有初步的印象 UVC协议:USB Video Class,USB视频类,是一种为USB视频捕获设备定义的协议标准. Android 平台支持使用即插即用的 U ...

最新文章

  1. 步步深入:MySQL架构总览-gt;查询执行流程-gt;SQL解析顺序
  2. SpringMVC连接多数据源配置
  3. 这些BATJ必考的Java面试题,你都懂了吗?
  4. php7.0康乐安装_Ubuntu安装php7.0环境
  5. 在linux实现公平队列,多级反馈队列调度策略在Linux中的应用和实现.pdf
  6. Java高级基础--阿里云Java复习
  7. 【Flink】Flink 写入 MySQL主键冲突 默认Upsert策略
  8. OpenShift 4 - 下载OpenShift项目中的ImageStream
  9. android sqlite数据库死锁,SQLite也可能出现死锁。
  10. java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
  11. 注册OCX控件并在VS2013的mfc程序中使用及常见问题总结
  12. Html的页面演变史02
  13. 解决Referenced file contains errors
  14. HDU4324 - Triangle LOVE 拓补排序
  15. 一周侃 | 周末随笔
  16. DSP程序开发与优化经验之四:TMS320C64x+ DSP------Using Cache
  17. 阿里云ACA认证到底是什么?
  18. C#计算圆的周长和面积、梯形的面积、三角形的面积
  19. 小群效应-社群运营的底层逻辑
  20. Netkiller FreeBSD 手札之前言

热门文章

  1. 基于Python实现的实时聊天系统
  2. infor系统日常问题解决笔记
  3. jquery 学习笔记及小练习
  4. 用python创建widows窗口
  5. 基于centos 搭建 LAMP 环境,建立WordPress站点
  6. 班级管理系统c语言学号姓名,c++学生成绩管理系统1、问题描述 学生信息包括:学号、姓名、性别、年龄、班级等信息。 小学生...
  7. 使用gstreamer,rtsp拉流,保存图像, jeston,使用硬件加速nvdec/nvenc
  8. gmail头像,字母头像(如Gmail Android最佳做法)
  9. 一个英语学渣是如何通过英语六级的
  10. 白大脑比超级计算机还,《精灵宝可梦》图鉴376:大脑的运算速度堪比计算机——巨金怪...