安卓相机全屏预览方案

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

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

相关推荐
longxibo7 小时前
【AIBIZ低代码平台:能长出业务系统的平台】
android·低代码·rxjava
AI_Gump15 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
疯华整猫20 小时前
否决 Flutter 提案那天,我发现自己也说不清 Framework 管什么
android
传奇开心果编程1 天前
【Flutter踩坑排雷】第25课:ScrollController 误用坑|跳转失效、监听泄漏与“控制器未附加”
android·flutter·ios·移动开发·跨平台·dart·声明式ui
慕容雪_1 天前
Capacitor8-Android打包完整手册
android·打包·capacitor
阿杰m2 天前
Android源码第十三章:Bluetooth——沿一次发现走到控制器
android
booboosui2 天前
派活给另一个 AI:前后两次文件夹快照,就是交付清单
android
普通人62 天前
MySQL_FIND_IN_SET函数详解
android·数据库·mysql
好的佩奇2 天前
Dart 之集合元素
android·flutter·dart
Easyhood2 天前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose