0

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

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

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

4

1 回答 1

0

可能有一种更有效的方法可以做到这一点,但是当将视图堆叠在一起时,您可以将 SurfaceView 放在 FrameLayout 中,然后将您想要的视图放在 XML 中 SurfaceView 之后的顶部,但仍在 FrameLayout 内部(意味着它稍后绘制,因此位于顶部)。这将完成您想要的堆叠。

如果您希望将视图放置在 SurfaceView 顶部而不是完全匹配它或左上角之外的任何位置,那么您可以使用 RelativeLayout 来布局 SurfaceView,并将 alightParentLeft、alightParentTop、alignParentBottom 和 alightParentRight 全部设置为真的。然后在 xml 中的 SurfaceView 之后再次在顶部绘制您想要绘制的视图,并将其绘制在顶部,您可以将其放置在您想要的任何位置。

现在,至于您想要看到 SurfaceView 顶部的视图,您可以通过设置它的 alpha 值来实现。如果你的目标是 3.0+,你可以只使用视图的 .setAlpha 方法,但如果你的目标是更低,你可以设置一个零毫秒的 AlphaAnimation 来设置视图的 alpha(可能有更好的方法来做到这一点,但这是我在蜂窝前视图上设置 alpha 的唯一方法)。

希望这可以帮助!祝你好运!

于 2013-07-21T20:17:07.290 回答