在曲面上分层视图视图



我正在尝试构建一个简单的游戏。我有一个SurfaceView,我在上面画了游戏的背景:

Canvas canvas = surfaceHolder.lockCanvas();
//draw on canvas....
surfaceHolder.unlockCanvasAndPost(canvas);

我有一个视图,我想在SurfaceView的顶部"分层",但我仍然希望能够看到它下面的背景。如何在SurfaceView的顶部绘制视图。View有自己的onDraw方法,还有一个关联的画布,所以我假设我需要将View放在我绘制背景的SurfaceView的顶部?

有一种更有效的方法可以做到这一点,但当涉及到将视图堆叠在另一个视图之上时,您可以将SurfaceView放在FrameLayout中,然后将您想要的视图放在XML中的SurfaceView之后的顶部,但仍放在Frame布局中(这意味着它稍后绘制,因此在顶部)。这将实现您想要的堆叠。

如果您希望将位于SurfaceView顶部的视图定位在与之完全匹配的其他位置或左上角,则可以使用RelativeLayout,在其中布局SurfaceView时,alightParentLeft、alightParent top、alignParentBottom和alightParenthRight均设置为true。然后,在xml中的SurfaceView之后,再次在顶部绘制您想要的视图,将其绘制在顶部,您可以将其定位在任何您想要的位置。

现在,如果您想让SurfaceView顶部的视图透明,可以通过设置其alpha值来实现。如果你的目标是3.0+,你可以只使用视图的.setAlpha方法,但如果你的目的是更低,你可以设置一个0毫秒的AlphaAnimation来设置视图的alpha(可能有更好的方法,但这是我在视图预蜂窝上设置alpha的唯一方法)。

希望这能有所帮助!祝你好运!

最新更新