/
arti4
/
IndividualProject
Обзор
Документация
Войти
/
arti4
/
IndividualProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
MyGame/app/src/main/java/com/example/mygame/MainActivity.java
112 строк
4 KB
arti4
upload files
18 ноя 2025, 12:41
18 ноя 2025, 12:41
f3a2f8a
Код
Авторство
О чём код?
package com.example.mygame; import android.content.Intent; import android.media.MediaPlayer; import android.os.Bundle; import android.view.Window; import android.view.WindowManager; import android.widget.RelativeLayout; import android.widget.ImageButton; import androidx.activity.OnBackPressedCallback; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { private GameView gameView; private ImageButton pauseButton; private static final int PAUSE_MENU_REQUEST = 1001; private SoundManager soundManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); RelativeLayout rootLayout = new RelativeLayout(this); gameView = new GameView(this); rootLayout.addView(gameView); pauseButton = new ImageButton(this); setupPauseButton(rootLayout); setContentView(rootLayout); setupBackPressedHandler(); } private void setupPauseButton(RelativeLayout rootLayout) { pauseButton.setImageResource(R.drawable.ic_pause); pauseButton.setBackgroundResource(android.R.color.transparent); pauseButton.setScaleType(ImageButton.ScaleType.CENTER_INSIDE); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams( (int)(60 * getResources().getDisplayMetrics().density), (int)(60 * getResources().getDisplayMetrics().density) ); params.topMargin = (int)(40 * getResources().getDisplayMetrics().density); params.rightMargin = (int)(40 * getResources().getDisplayMetrics().density); params.addRule(RelativeLayout.ALIGN_PARENT_TOP); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); pauseButton.setLayoutParams(params); pauseButton.setOnClickListener(v -> { if (gameView != null) { gameView.showPauseMenu(); } }); rootLayout.addView(pauseButton); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == PAUSE_MENU_REQUEST && gameView != null) { gameView.onActivityResult(requestCode, resultCode); } } @Override protected void onPause() { super.onPause(); if (gameView != null) { gameView.pauseGame(); gameView.stopGameMusic(); } } private void stopGameMusic() { try { MediaPlayer player = new MediaPlayer(); player.reset(); player.release(); } catch (Exception e) { e.printStackTrace(); } } @Override protected void onResume() { super.onResume(); if (gameView != null) { gameView.resumeGame(); } } @Override protected void onDestroy() { super.onDestroy(); if (gameView != null) { gameView.stopGameMusic(); if (soundManager != null) { soundManager.stopAllSounds(); } } } private void setupBackPressedHandler() { getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { if (gameView != null) { gameView.showPauseMenu(); } } }); } }