如何在CameraSource上放置一个图标?

时间:2018-01-29 20:49:29

标签: java android

我需要添加一个图标来在我的cameraSource上拍照,但我正在使用自定义库(由第三人开发)。我的图标需要在cameraSourcePreview标签内。

private Context mContext;
    private SurfaceView mSurfaceView;
    private boolean mStartRequested;
    private boolean mSurfaceAvailable;
    private CameraSource mCameraSource;

    private GraphicOverlay mOverlay;

    public CameraSourcePreview(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        mStartRequested = false;
        mSurfaceAvailable = false;

        mSurfaceView = new SurfaceView(context);
        mSurfaceView.getHolder().addCallback(new SurfaceCallback());
        addView(mSurfaceView);
    } 

我尝试放入我的xml,但它不起作用。

我的xml

<LinearLayout
    android:id="@+id/topLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">

    <com.example.aveek.barcodescanner.ui.CameraSourcePreview
        android:id="@+id/preview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_gravity="center">

        <pl.droidsonroids.gif.GifImageView
            android:id="@+id/qr_image"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:keepScreenOn="true" />

        <com.example.aveek.barcodescanner.ui.GraphicOverlay
            android:id="@+id/graphicOverlay"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </com.example.aveek.barcodescanner.ui.CameraSourcePreview>

    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/ic_settings_black_24dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout>

我有这个丑陋的设计:

enter image description here

我怎么能这样做?我也尝试将SuurfaceView更改为FrameLayout。

1 个答案:

答案 0 :(得分:1)

试试这个 - 将父视图从LinearLayout更改为RelativeLayout,以便您可以在其他视图(CameraSourcePreview)的TOP上放置一个View(按钮)(。

<RelativeLayout
    android:id="@+id/topLayout"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:keepScreenOn="true">

    <com.example.aveek.barcodescanner.ui.CameraSourcePreview
        android:id="@+id/preview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:layout_gravity="center">

        <pl.droidsonroids.gif.GifImageView
            android:id="@+id/qr_image"
            android:layout_width="120dp"
            android:layout_height="120dp"
            android:layout_gravity="center"
            android:gravity="center"
            android:keepScreenOn="true" />

        <com.example.aveek.barcodescanner.ui.GraphicOverlay
            android:id="@+id/graphicOverlay"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </com.example.aveek.barcodescanner.ui.CameraSourcePreview>

    <android.support.design.widget.FloatingActionButton
        android:src="@drawable/ic_settings_black_24dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:alignParentBottom="true"
        android:layout_marginBottom="20dp"
        android:layout_centerHorizontal="true"
        />


</RelativeLayout>