it-roy-ru.com

Использование полноэкранного режима

Я делаю простую игру, и до сих пор я использовал пустое действие. Теперь я хочу, чтобы он покрывал весь экран. Нужно ли мне перекодировать всю вещь, используя FullScreen Activity? Я пытался искать что-то в Интернете, но каждая вещь, с которой я сталкивался, добавляла этот бит:

requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
                     WindowManager.LayoutParams.FLAG_FULLSCREEN);

Что приводит к сбою приложения, как только оно запускается на устройстве. SO пожалуйста, если кто-нибудь может показать мне мою ошибку.

Вот ссылка на вывод logcat, а также код игры

Логкат и код игры

12
Nabeel abbas

Попробуйте это, чтобы установить активность в полноэкранном режиме:

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

Вы можете поместить этот код в метод onCreate()

30
Michele Lacorte

Вы можете попробовать следующий код.

style.xml:

<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="Android:windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowContentOverlay">@null</item>
</style>

AndroidManifest.xml:

<activity
    Android:name=".FullScreenActivity"
    Android:theme="@style/AppTheme.NoTitle"
    Android:screenOrientation="portrait"
    Android:launchMode="singleTop">
</activity>
25
t-kashima

Ни один из ответов выше не работает правильно; у них есть проблемы с методом onResume(), и в итоге они отображают программные клавиши.

Правильный способ сделать это довольно просто. Переопределите этот метод в Activity, который должен быть полноэкранным:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    }
}

Вот если вы хотите «Липкое погружение». Ознакомьтесь с полным документом здесь и решите, что лучше для вашего варианта использования.

4
RominaV

В AndroidManifest.xml file

<activity
       Android:name=".Launch"
       Android:label="@string/app_name"
       Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important -->

<intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>

а твой класс должен расширять Activity а не AppCompatActivity ...

2
KAMAL VERMA

То, что вы хотели, называется режимом погружения, который работает на Android 4.4 и выше

getWindow().getDecorView().setSystemUiVisibility(
  View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

Официальную документацию можно найти здесь

2
Amalan Dhananjayan

Вы можете просто зайти в свой файл манифеста и добавить Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen" в свой <activity /> или тег <application /> в своем файле манифеста, в зависимости от ваших требований.

0
tk1505