我使用SurfaceView
创建了这个小游戏,现在我想通过屏幕显示游戏。由于SurfaceView
的更新和渲染方法正被另一个Thread
调用,我想知道如何通过XML正确地夸大游戏并将其添加到屏幕上。
PD:我的意思是我知道我可以使用对活动的引用,我可以做
public void render() {
if(gameOver) {
View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
// code to get the layout
// and finally
layout.addView(gameOverView);
}
但问题是在UI线程中创建了activity
,并且辅助线程调用了render()
,因此它会引发异常。
答案 0 :(得分:2)
如果你将它包装在runOnUiThread中,你的方法应该可行:
public void render() {
if(gameOver)
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
View gameOverView = LayoutInflater.from(activity).inflate(R.layout.gameover);
// code to get the layout
// and finally
layout.addView(gameOverView);
}
});
}
通过屏幕开始另一项游戏活动可能会更好吗?
答案 1 :(得分:0)
SurfaceView是一个视图。您只需扩展SurfaceView即可。
你已经完成了。