如何使相机预览的透明彩色背景散发出一个视图?

Posted

技术标签:

【中文标题】如何使相机预览的透明彩色背景散发出一个视图?【英文标题】:How to make transparent Color background for camera preview exuding one View? 【发布时间】:2021-07-02 06:44:47 【问题描述】:

我想为我的相机预览制作一个类似扫描仪的视图 我已经在相机预览的中心创建了一个带有矩形视图的视图现在我想为相机预览添加一个透明颜色背景,但想要制作一个矩形清晰视图。我尝试过设置 alpha 和背景颜色,但在我看来它不起作用。

<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_
android:layout_>

<FrameLayout
    android:id="@+id/preview"
    android:layout_
    android:layout_
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />



<ImageView
    android:id="@+id/switchcamera"
    android:layout_
    android:layout_
    android:contentDescription="camera_change"
    android:onClick="onClick"
    android:src="@drawable/frontcamera_foreground"
    app:layout_constraintEnd_toEndOf="@+id/preview"
    app:layout_constraintTop_toTopOf="parent" />


<TextView
    android:id="@+id/text_animator"
    android:layout_
    android:layout_
    android:orientation="horizontal"
    android:text="1"
    android:textColor="@color/white"
    android:textSize="70sp"
    android:textStyle="bold"
    android:visibility="gone"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintGuide_percent="0.5"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

<View
    android:id="@+id/viewRectangle"
    android:layout_
    android:layout_
    android:background="@drawable/border"
    android:visibility="gone"
    android:alpha="1"
    android:layout_marginLeft="50dp"
    android:layout_marginRight="50dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

这里的 FrameLayout 用于使用自定义 SurfaceView 预览相机 View 是我的 RectangleView。

【问题讨论】:

【参考方案1】:

尝试以下操作:

忽略com.otaliastudios.cameraview.CameraView这只是我导入的相机库。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    tools:context=".MainActivity">


    <com.otaliastudios.cameraview.CameraView
        android:id="@+id/camera"
        android:layout_
        android:layout_
        android:keepScreenOn="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <View
        android:id="@+id/viewRectangle"
        android:layout_
        android:layout_
        android:background="@drawable/border"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

现在重要的部分是border.xml drawable 是如何构造的:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@android:color/transparent"/>
    <stroke android:color="#a00" android:/>
</shape>

注意,实心部分设置为透明,只有笔划被赋予纯色。这是你可以实现的。

【讨论】:

以上是关于如何使相机预览的透明彩色背景散发出一个视图?的主要内容,如果未能解决你的问题,请参考以下文章

如何使布局和视图的背景透明?

如何在相机ARKit上添加半透明背景

如何使用 PHP 使动画 gif 的背景透明?

SwiftUI:如何使列表视图透明?如何更改列表视图背景颜色?

如何在swift中使背景视图透明但图像不透明[关闭]

如何使用 Perl 和 GD 创建透明的真彩色 PNG?