安卓相机全屏预览方案

以下方案均为camera api的实现思路(camerax封装更简单)

一、全屏展示方案大致思路

1、预览用srufaceview,外部可用framelayout(方便添加ui),srufaceview居中

2、分辨率的话根据手机屏幕大小,选择相机硬件中提供的最合适的分辨率,根据分辨率修改srufaceview的宽度或高度(此时总有宽或高总有一个会超出屏幕,不用担心,因为srufaceview居中放在了framelayout中,会裁切)

二、AI归纳:

  1. 布局用FrameLayout包裹SurfaceView,设置gravity为center

  2. 根据屏幕尺寸,从相机支持的预览尺寸中选择宽高比

    最接近的那个

  3. 在SurfaceView的onMeasure中,根据相机预览尺寸计算

    View应该显示的大小。为了充满屏幕,会让一个维度

    (宽或高)超出屏幕范围

  4. FrameLayout会自动裁剪超出的部分,因为设置了

    gravity为center,所以裁剪是均匀的,不会偏向一边

这样就实现了充满屏幕、无黑边、无变形的预览效果。

相关推荐
_李小白2 小时前
【Android 美颜相机】第十七天:GPUImageAddBlendFilter 解析
android·数码相机
符哥20082 小时前
一篇讲透掌握 Kotlin 协程
android·kotlin
开发者小天2 小时前
python中的Dictionaries
android·开发语言·python
_F_y2 小时前
MySQL表的内连和外连
android·数据库·mysql
肖。35487870942 小时前
窗口半初始化导致的BadTokenException闪退!解决纯Java开发的安卓软件开局闪退!具体表现为存储中的缓存为0和数据为0。
android·java·javascript·css·html
2601_9495758612 小时前
Flutter for OpenHarmony二手物品置换App实战 - 商品卡片实现
android·flutter
2601_9495758614 小时前
Flutter for OpenHarmony二手物品置换App实战 - 表单验证实现
android·java·flutter
龚礼鹏16 小时前
图像显示框架八——BufferQueue与BLASTBufferQueue(基于android 15源码分析)
android·c语言
1登峰造极17 小时前
uniapp 运行安卓报错reportJSException >>>> exception function:createInstanceContext, exception:white screen
android·java·uni-app