我应该将我的代码放在Activity或View中吗?

时间:2010-12-17 11:12:57

标签: android view android-activity

我正在为Android制作我的第一款游戏,但我遇到了很多困难。对我来说,API在某些方面似乎有点奇怪(例如对话框 - 为什么他们必须经历事件......)但我正在慢慢学习。

但是现在,我有点迷失了。我不确定在哪里准确地放置我的代码,我真的不知道如何找出最好的方法。

我制作了自己的View,GameView,它在onDraw事件中进行绘制。我还将大部分代码放入GameView中。例如,当您触摸View(在onTouch事件中)时,我会处理它并执行操作。

但是现在我想显示一个标准的对话框,我读它必须通过一个Activity,showDialog和onDialog事件来完成。我有点困惑,我不能直接通过View显示对话框。

所以我开始思考,也许我做错了...也许我不应该将所有代码放入View中,而是将我的代码放入Activity中?当我浏览API对话框示例时,他们只是从XML中获取按钮并将事件附加到它们等所有内容都在Activiy内。

我希望我的问题/问题有点清楚。我不确定哪些代码应该去哪里,以及如何在Activity和(Game)视图之间进行交互等。

2 个答案:

答案 0 :(得分:0)

你应该创建一个带布局的xml。它将包含GameView,它将知道它在其中显示的活动。所以,当你检测到前。在GameView中触摸事件,您可以询问活动以显示对话框。见概念:

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();
  }
}

答案 1 :(得分:0)

很难说你的设计是好还是不好,但我不会太担心。

LunarLander示例在Activity中的代码非常少(基本上只创建菜单),并且大多数游戏逻辑确实在View中实现。当然,如果你想要一个响应式游戏,你应该尽可能少地使用onDraw()方法。