Использование полноэкранного режима
Я делаю простую игру, и до сих пор я использовал Blank Activity. Теперь я хочу, чтобы он охватывал весь экран. Нужно ли мне перекодировать всю вещь с помощью FullScreen Activity? Я пробовал искать что-то в Интернете, но каждая вещь, с которой я столкнулся, добавила этот бит:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Это приводит к сбою приложения сразу после его запуска на устройстве. ТАК, пожалуйста, если кто-нибудь покажет мне мою ошибку.
Вот ссылка на вывод logcat, а также код игры
Logcat и игровой код
Ответы
Ответ 1
Попробуйте установить активность в полноэкранном режиме:
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()
Ответ 2
Вы можете попробовать следующий код.
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>
Ответ 3
Ни один из приведенных выше ответов не работает правильно; они имеют проблемы с методом 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);
}
}
Это, если вы хотите "Sticky Immersion". Ознакомьтесь с полным документом здесь и решите, что лучше для вашего случая использования.
Ответ 4
То, что вам нужно, называется режимом Imersive, который работает на 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);
Официальную документацию можно найти здесь
Ответ 5
В файле AndroidManifest.xml
<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 not AppCompatActivity...
Ответ 6
Вы можете просто перейти в файл манифеста и добавить android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
в свой
<activity />
или <application />
в вашем файле манифеста в зависимости от вашего требования.