簡體   English   中英

Android開發人員:帶有SurfaceView的AlertDialog

[英]Android Dev: AlertDialog with SurfaceView

我正在開發一個Android游戲,並且我要用SurfaceView渲染游戲,因此我想制作它,以便在玩家輸贏時彈出AlertDialog並重新啟動關卡。

基本上我有兩個問題:

  1. 如何將AlertDialogs與SurfaceViews一起使用? 我是否必須將其放入layout.xml或將其編碼到UI部分或游戲線程部分?

  2. 有沒有一種方法可以“重新啟動”一項活動,以便它不會使新的活動僅以與最初給出的“意圖”相同的方式開始當前活動?

謝謝!

您可以使用this.Start(); 在任何情況下,在您的活動中重新啟動線程時,這都是第二個問題的答案。

或者你可以使用

if(maze.isGameComplete()) {
   AlertDialog.Builder builder = new AlertDialog.Builder(context);
   builder.setTitle(context.getText(R.string.finished_title));
   LayoutInflater inflater = context.getLayoutInflater();
   View view = inflater.inflate(R.layout.finish, null);
   builder.setView(view);
   View closeButton =view.findViewById(R.id.closeGame);

   closeButton.setOnClickListener(new OnClickListener() {
      @Override
      public void onClick(View clicked) {
         if(clicked.getId() == R.id.closeGame) {
            context.finish();
         }
      }
   });

   AlertDialog finishDialog = builder.create();
   finishDialog.show();
}

您可以從SurfaceView類重新啟動活動,但這是一種“骯臟”的方式,它可能會忽悠,可能會在進程中占用太多內存並使應用程序崩潰

Intent intent = ((Activity) getContext()).getIntent(); 
getContext().startActivity(intent); //start the same activity again
((Activity) getContext()).finish(); //finish the previous instance

正確的方法是通過編寫一種方法來重新初始化游戲,該方法將重置所有必需的變量,從數組列表中清除舊對象等。

可以使用警報對話框,但是標准的android對話框對於一款不錯的游戲來說太基本了,因此最好為該對話框創建另一個gaphics對象並將其繪制在屏幕上,甚至可以將其動畫化...使用透明活動是另一種可能性,它可以提供更多的設計自由。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM