安卓相机全屏预览方案

以下方案均为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,所以裁剪是均匀的,不会偏向一边

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

相关推荐
_祝你今天愉快1 小时前
Paint Cavans高级绘制:[一]Paint画笔高级应用
android
@zulnger2 小时前
安卓进行稳定性测试
android·appium·1024程序员节
不吃凉粉3 小时前
android 副屏连接
android
OxYGC4 小时前
手机为什么能“自动跳过“开屏广告?李跳跳、GKD 与 iOS 代理软件原理盘点
android·ios·开屏广告·广告屏蔽
Android-Flutter12 小时前
Compose 管理状态 详解
android·compose
缓慢更新13 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
我怀里的猫14 小时前
android-activity-launch-sequence
android
YB137516 小时前
Jetpack Compose 动画rememberInfiniteTransition
android
baidu_2474386119 小时前
Android 自定义竖直的虚线
android
传奇开心果编程20 小时前
【Jetpack Compose娓娓道来】 第25课:ViewModel就是UI界面的大脑
android·kotlin·移动开发·jetpack compose·编程语言理论·编程框架·声明式ui