在透明的SurfaceView上放置ImageView

问题描述 投票:2回答:2

我有一个带有透明背景的SurfaceView,可以在上面绘制东西,最重要的是,我想绘制一个ImageView。为了使SurfaceView透明,我必须设置surfaceView.setZOrderOnTop(true),但是问题是,现在,我的surfaceview的画布绘制在imageview的顶部,由于setZOrderOnTop(true),这很有意义。我的问题是,有没有办法实现我想要的?具有透明背景的SurfaceView和位于其顶部的ImageView?

谢谢,弗拉德

编辑:好的,所以这不可能。请参阅下面的fadden答案,或更深入地了解https://www.youtube.com/watch?v=duefsFTJXzc&feature=feedwll&list=WL

android surfaceview transparent
2个回答
2
投票

SurfaceView不能完成您想做的事情。

所有视图都组成一个图层。 SurfaceView有两个部分,“视图”部分(它只是一个透明的占位符)和“表面”部分。后者是一个完全独立的层。

因此,您可以将“曲面”部分放在所有其他视图之上或之下,但不能在两者之间。 TextureView可以满足您的要求,但是您需要为此使用API​​ 14 +。

但是,您可以具有多个SurfaceView,并将“表面”层放置在不同的Z层。有充分的理由不执行此操作-一旦您拥有N个以上的曲面,系统合成器可能会切换到效率较低的工作模式-但这是可能的。有关示例,请参见Grafika中的“多表面测试”。


0
投票

您可以将ImageView放在PopupWindow内。它可以来自xml布局。

示例:

View popupView = layoutInflater.inflate(R.layout.popuplayout, null);
PopupWindow myPopup = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
myPopup.setOutsideTouchable(true);
myPopup.showAtLocation(rootView, Gravity.TOP | Gravity.LEFT, 100, 100);

其中100,100是您的x,y位置。

© www.soinside.com 2019 - 2024. All rights reserved.