Предварительный просмотр Camera2 черный, если я добавлю GLSurfaceView спереди
Я хочу сделать анимацию OpenGL (GLSurfaceView
) перед предварительным просмотром API Camera2 (TextureView
), но анимация не прозрачна. Я добавил GLSurfaceView
напротив TextureView
,
- это работает только если я установил
setZOrderOnTop(true);
вGLSurfaceView
, но тогда все кнопки, а также ящик находится позади вида...
Есть ли способ сделать GLSurfaceView
(анимация) прозрачный?
2 ответа
setZOrderOnTop()
работает, но это означает, что вы не можете иметь ничего выше прозрачного SurfaceView
К сожалению,
Единственный способ, чтобы заменить TextureView
предварительного просмотра Camera2, с SurfaceView
, Тогда я могу использовать setZOrderMediaOverlay(true);
в GLSurfaceView
,
setZOrderMediaOverlay(логическое значение isMediaOverlay)
Управляет размещением поверхности вида поверхности поверх другого обычного вида поверхности в окне (но все же за самим окном).
SurfaceView (и его подкласс GLSurfaceView) состоят из двух частей: Surface и View. Поверхность обеспечивает доступ к отдельному уровню, независимому от уровня пользовательского интерфейса View. Вы можете расположить его перед или за слоем вида, но он не может поместиться "между" видами.
С помощью setZOrderOnTop(true)
правильный способ разместить слой Surface перед окнами Views. Если это не то, что вам нужно, вы должны вместо этого рассмотреть использование TextureView, так как они отображаются на слое View и могут быть расположены выше или ниже отдельных видов.
Вы можете выполнить рендеринг в TextureView (или что-либо еще с Surface) с помощью OpenGL ES. См., Например, "простое GL в TextureView" в Grafika.