如何只显示Android相机预览的一部分?

时间:2016-10-26 15:39:34

标签: android android-camera android-camera2

我需要一种“裁剪”相机预览的方法,以便只展示其中的一部分。 例如: 假设我的相机支持1920X1080。现在,我的屏幕上都有一个SurfaceView(因为我的屏幕也是1920X1080)。我想保持预览滚动,但“隐藏”屏幕的左侧,所以,如果我直接看相机,那么屏幕将被拆分。一半会显示我脸的右侧,另一半则不会显示任何内容。

我该怎么做? 可以用Camera api完成吗?和Camera2 api?

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以为其他SurfaceView设置View的位置,即您可以将元素的开头设置为超出屏幕的开头。

答案 1 :(得分:0)

将曲面视图放在填充屏幕的相对布局中,并在相同的相对布局中添加一个新视图,其中不透明背景直到曲面视图。设置最后一个视图以填充父级的高度以及您想要的宽度。

这是一个代码示例,我将预览拆分为红色视图和透明视图

<RelativeLayout
    android:id="@+id/preview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#00f" >

    <SurfaceView

        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:alpha="1"
        android:orientation="horizontal" >

        <View
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.5"
            android:background="#F00"
            android:orientation="vertical"/>

        <View
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="0.5"
            android:background="@null" />
    </LinearLayout>
</RelativeLayout>