Предварительный просмотр камеры с прозрачным изображением выше

Я хотел бы увидеть изображение поверх Camera SurfaceView\preview. Как мне это сделать? Любые примеры?

Ответ 1

Отличный пример можно найти в ZXing, Сканер штрих-кода.

То, что они делают, это использование FrameLayout для SurfaceView и их пользовательский ViewfinderView, чтобы как SurfaceView, так и ViewfinderView охватывали весь экран:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="fill_parent"
             android:layout_height="fill_parent">

  <SurfaceView android:id="@+id/preview_view"
               android:layout_width="fill_parent"
               android:layout_height="fill_parent"
               android:layout_centerInParent="true"/>

  <com.google.zxing.client.android.ViewfinderView
      android:id="@+id/viewfinder_view"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:background="@color/transparent"/>

</FrameLayout>

Обратите внимание на значения fill_parent в layout_height и layout_width для обоих представлений.

И затем они рисуют пользовательские вещи в ViewfinderView.onDraw(), только поверх того, что отображается при просмотре камеры.

Если вы не хотите ничего рисовать, но просто используйте предопределенное изображение, используйте ImageView вместо ViewfinderView. Вы можете подумать о вызове метода setAlpha, чтобы сделать ваше изображение прозрачным (если drawable уже не было прозрачным).


Вот скриншот от сканера штрих-кода:

enter image description here