在surfaceview上显示图像

时间:2017-06-17 21:39:44

标签: android xml fragment surfaceview

嗨,我是一个片段,其中包含相机预览的SurfaceView,我想在surfaceview上显示一个矩形形状。我已尝试将ImageView放在SurfaceView上,但SurfaceView隐藏了它。我怎么能弄明白?

它的外观rn

我希望它looks

这是我的片段:

public class Tab2Scan extends Fragment {

ConnectionDetector cd;
// QREader
private SurfaceView mySurfaceView;
private QREader qrEader;
Context thisContext;

View rootView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    rootView = inflater.inflate(R.layout.tab2scan, container, false);


    getActivity().getWindow().setSoftInputMode(
            WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    thisContext = getContext();
    cd = new ConnectionDetector(thisContext);

    mySurfaceView = (SurfaceView) rootView.findViewById(R.id.camera_view);

    // Init QREader
    // ------------
    qrEader = new QREader.Builder(thisContext, mySurfaceView, new QRDataListener() {
        @Override
        public void onDetected(final String data) {

            //qrEader.stop();
            Intent intent = new Intent(getActivity(), ShowData.class);
            intent.putExtra("variabile", data);
            startActivity(intent);
            getActivity().finish();
            //Toast.makeText(thisContext, result.getContents(),Toast.LENGTH_LONG).show();

            Log.d("QREader", "Value : " + data);
        }
    }).facing(QREader.BACK_CAM)
            .enableAutofocus(true)
            .height(mySurfaceView.getHeight())
            .width(mySurfaceView.getWidth())
            .build();

    qrEader.start();

    return rootView;
}



@Override
public void onResume() {
    super.onResume();

    // Init and Start with SurfaceView
    // -------------------------------
    qrEader.initAndStart(mySurfaceView);
    qrEader.start();
}

@Override
public void onPause() {
    super.onPause();

    // Cleanup in onPause()
    // --------------------
    qrEader.releaseAndCleanup();
}

}

它是XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical"
    tools:context=".Main">

<SurfaceView
    android:id="@+id/camera_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="100dp"
    android:layout_marginBottom="100dp"
    />

</RelativeLayout>

谢谢!

1 个答案:

答案 0 :(得分:1)

只需向ImageView添加RelativeLayout即可使用透明图像。

ImageView必须低于标记SurfaceView,并且必须与SurfaceView的尺寸相同。