Android - 使用启动图像重叠/覆盖一个视图?

时间:2015-06-09 13:08:03

标签: android android-layout opencv

美好的一天。我正在构建一个Android应用程序。我正在使用OpenCV3的NativeCameraView LayoutElement,我想在它上面放置一个启动图像。

原始布局如下所示:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:opencv="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/baseRelativeLayout">

    <org.opencv.android.NativeCameraView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:alpha="0.7"
        android:id="@+id/color_blob_detection_activity_surface_view" />

</RelativeLayout>

它向我展示了使用Open CV的NativeCameraView的相机输入。然后,我可以按照我喜欢的方式进行图像处理。

但是,我想在它上方添加一个启动图像叠加层。我做的是添加一个imageView,如下:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imageViewSplashScreen"
    android:alpha="0.7"
    android:visibility="visible"
    android:src="@drawable/screen_1"
    android:contentDescription="splashScreen"/>

但是,即使“设计”选项卡显示我的启动画面imageView位于OpenCV的cameraView上方,我的应用程序根本不显示启动图像。

然后我尝试将openCV Camera Object和ImageView放在不同的相对视图上:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:opencv="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/baseRelativeLayout">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/imageViewSplashScreen"
            android:alpha="0.7"
            android:visibility="visible"
            android:src="@drawable/screen_1"
            android:contentDescription="splashScreen"/>

    </RelativeLayout>

    <!--<org.opencv.android.JavaCameraView-->
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <org.opencv.android.NativeCameraView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:alpha="0.7"
            android:id="@+id/color_blob_detection_activity_surface_view" />
    </RelativeLayout>

</RelativeLayout>

然而,即使我换了他们的位置,这也行不通。

最后,我还使用了FrameLayout:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:opencv="http://schemas.android.com/apk/res-auto"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/baseRelativeLayout">

    <org.opencv.android.NativeCameraView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/color_blob_detection_activity_surface_view"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/imageViewBitmapResult"
        android:visibility="gone"
        android:contentDescription="resultScreen"/>

</FrameLayout>

但无济于事

任何人都可以帮我解决布局问题吗?我觉得我在这里忽略了一些简单的东西。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

只需使用layout_above或layout_below即可。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_above="@+id\relativeLayout1">
<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/imageViewSplashScreen"
    android:alpha="0.7"
    android:visibility="visible"
    android:src="@drawable/screen_1"
    android:contentDescription="splashScreen"/>

</RelativeLayout>

<!--<org.opencv.android.JavaCameraView-->
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id\relativeLayout1">
    <org.opencv.android.NativeCameraView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:alpha="0.7"
        android:id="@+id/color_blob_detection_activity_surface_view" />
</RelativeLayout>

答案 1 :(得分:0)

LinearLayout用于逐个线性堆叠的视图。

FrameLayout用于堆叠在彼此之上的视图。

相对布局适用于更复杂的视图。具有视图之间的相对属性。