1

我正在尝试实现一个支持操作栏的活动,该活动以纵向模式显示相机预览表面。我正在计算最佳预览尺寸(来自 zxing 代码),但该代码没有考虑操作栏尺寸(即高度),返回拉伸图像预览。以前有人遇到过类似的问题吗?那里有任何关于考虑操作栏高度打开相机预览的教程吗?

编辑:我的目标 API 级别 >= 8。

  1. 我添加了样式:

    真 @null 真

我没有找到任何兼容的 android:windowActionModeOverlay 名称,也许不支持它?不“覆盖”它的缺点是什么?

  1. 我不得不补充:

    android:paddingTop="?attr/actionBarSize"

到 FrameLayout,这样,我在 AB 和布局之间有正确的空间,垂直。我快到了,但通知栏正在消失(我只有 AB),我认为是因为全屏标签。我已经对目前的结果感到满意,但如果有人有建议,欢迎他们。=)

4

1 回答 1

1

您希望SurfaceView保持屏幕的全尺寸。相机的预览分辨率大多与屏幕的纵横比相匹配,因此,如果您不这样做,设备将被迫将图像压缩一维以使其适合视图。

这意味着您不希望ActionBar取代 main SurfaceView,而是坐在它上面。我也让它透明。这是实际效果(https://play.google.com/store/apps/details?id=com.srowen.bs.android):

在此处输入图像描述

其中大部分是通过ActionBar在主题中设置样式来完成的。这是我为此修改默认 Holo 主题所做的工作:

<style name="CaptureTheme" parent="android:Theme.Holo">
  <item name="android:windowFullscreen">true</item>
  <item name="android:windowContentOverlay">@null</item>
  <item name="android:windowActionBarOverlay">true</item>
  <item name="android:windowActionModeOverlay">true</item>
</style>
于 2013-11-09T14:20:41.933 回答