我正在尝试建立一个简单的游戏。我有一个SurfaceView,我在上面画游戏的背景:
Canvas canvas = surfaceHolder.lockCanvas();
//draw on canvas....
surfaceHolder.unlockCanvasAndPost(canvas);
我有一个视图,我想‘层’在SurfaceView之上,但我仍然希望能够看到它下面的背景。如何在SurfaceView上绘制视图。视图有它自己的onDraw方法,有一个相关的画布,所以我假设我需要把视图放在我绘制背景的SurfaceView上?
发布于 2013-07-21 20:17:07
也许有一种更有效的方法可以做到这一点,但是当涉及到将视图堆叠在另一个视图之上时,您可以将SurfaceView放在FrameLayout中,然后将您想要的视图放在SurfaceView之后的顶部,但仍然放在FrameLayout内部(这意味着它是稍后绘制的,因此位于顶部)。这将完成您想要的堆叠。
如果希望将视图放置在SurfaceView顶部而不是与之完全匹配的任何位置,或者放置在左上角,那么可以使用RelativeLayout来布局SurfaceView,并将alightParentLeft、alightParentTop、alignParentBottom和alightParentRight都设置为true。然后,将您想要绘制的视图放在顶部,紧跟在xml中的SurfaceView之后将其绘制在顶部,您可以将其放置在您想要的任何位置。
现在,如果你想让SurfaceView顶部的视图看得更透彻,你可以通过设置它的Alpha值来实现。如果你的目标是3.0+,你可以使用视图的.setAlpha方法,但如果你的目标是更低,你可以设置0毫秒的AlphaAnimation来设置视图的alpha (可能有更好的方法,但这是我在视图预蜂窝上设置alpha的唯一方法)。
希望这能有所帮助!祝你好运!
https://stackoverflow.com/questions/17775635
复制