Android 我应该将代码放在活动或视图中吗?
我正忙于为Android制作我的第一个游戏,但我遇到了很多困难。对我来说,API在某些方面似乎有点奇怪(例如对话框-为什么它们必须经历事件…),但我正在慢慢学习 但是现在,我有点迷路了。我不确定我的代码到底应该放在哪里,我也不知道如何找出最好的方法 我已经创建了自己的视图GameView,它在onDraw事件中进行绘图。我还将我的大部分代码放到GameView中。例如,当您触摸视图(在onTouch事件中)时,我会处理它并执行操作 但是现在我想显示一个标准对话框,我读到它必须通过一个活动来完成,包括showDialog和onDialog事件。我有点困惑,我不能直接通过视图显示对话框 所以我开始想,也许我做错了。。。也许我不应该把我所有的代码都放到视图中,而是把我的代码放到活动中?当我浏览API对话框示例时,它们只是从XML中获取按钮并将事件附加到按钮上,等等,所有这些都在Activy中Android 我应该将代码放在活动或视图中吗?,android,view,android-activity,Android,View,Android Activity,我正忙于为Android制作我的第一个游戏,但我遇到了很多困难。对我来说,API在某些方面似乎有点奇怪(例如对话框-为什么它们必须经历事件…),但我正在慢慢学习 但是现在,我有点迷路了。我不确定我的代码到底应该放在哪里,我也不知道如何找出最好的方法 我已经创建了自己的视图GameView,它在onDraw事件中进行绘图。我还将我的大部分代码放到GameView中。例如,当您触摸视图(在onTouch事件中)时,我会处理它并执行操作 但是现在我想显示一个标准对话框,我读到它必须通过一个活动来完成,
我希望我的问题有点清楚。我不确定哪些代码应该放在哪里,以及如何在活动和(游戏)视图之间交互等等。您应该创建一个带有布局的xml。它将包含GameView,该GameView将了解其中显示的活动。因此,当您在GameView中检测到ex.touch事件时,您可以要求activity显示对话框。见概念:
public void MyActivtiy extends Activity {
@Override
public void onCreate() {
// your initialization
GameView view = (GameView) findViewById(R.id.gameView);
view.setCalledActivity(this);
}
}
public GameView extends View {
private Context context;
public void setCalledActivity(Context context) {
this.context = context;
}
@Override
public void onTouchEvent(...) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MyActivity.this.finish();
}
}) ;
AlertDialog alert = builder.create();
alert.show();
}
}
很难说你的设计是否好,但我不会太担心
该示例在
活动
中只有很少的代码(基本上只创建菜单),大多数游戏逻辑实际上是在视图
中实现的。当然,如果你想要一个有响应的游戏,你应该在onDraw()
方法中拥有尽可能少的内容。因此,我必须从视图中调用showDialog方法,并在活动中处理onDialog事件,分离代码?请参阅更新的答案。创建对话框不需要任何onDialog事件。API文档说明,如果您管理自己的对话框,则必须确保释放资源等,以免泄漏对话框和/或视图,如果你通过onDialog事件来管理它,Android会自动为你完成这一切。它指的是使用附加图形创建自定义对话框,等等。如果您只想显示一个带有文本的对话框,上面的代码就足够了。