Полноэкранное приложение Android
У меня есть два вопроса:
- Как я могу запустить приложение в полноэкранном режиме
- как видеоплееры запускают видеоролики в полноэкранном режиме.
Я пробовал много и все еще изо всех сил пытался достичь этого, но не смог найти решение.
список найденных решений, но они не соответствуют моим требованиям
-
это скрывает только панель уведомлений.
requestWindowFeature(Window.FEATURE_NO_TITLE);
GetWindow() setFlags (WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);.
-
также скрывает только панель уведомлений
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
-
он низко профилирует панель навигации, не скрывая ее.
GetWindow() getDecorView() setSystemUiVisibility (View.SYSTEM_UI_FLAG_LOW_PROFILE);..
-
не влияет на мою активность.
anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
обратите внимание, что:
- Я не говорю об укоренении устройства, поэтому, пожалуйста, предоставьте те решения, которые могут работать без укоренения устройства.
- Я не говорю о том, что скрываю только панель уведомлений, но полный экран, скрывая как панель навигации, так и панель уведомлений.
- Я говорю о желе beans api 4.1 или выше версии Android для Android.
- и, пожалуйста, дайте ответы с кодом.
после моего исследования и ваших ответов, я получаю следующее:
![enter image description here]()
но мое приложение должно выглядеть так, как без панели навигации:
![enter image description here]()
Я не хочу, чтобы панель навигации системы отображалась в моем приложении.
Ответы
Ответ 1
Я не уверен, что вам нужно, но следующее скрывает панель уведомлений и клавиши Soft Navigation (как показано на устройствах Google Nexus), поэтому приложение по существу является "полноэкранным".
Edit2
В Android 4.4 (API 19) Google представил новый режим Immersive, который может скрывать статус и навигацию и разрешать действительно полноэкранный интерфейс.
// This snippet hides the system bars.
private void hideSystemUI() {
// Set the IMMERSIVE flag.
// Set the content to appear under the system bars so that the content
// doesn't resize when the system bars hide and show.
mDecorView.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 // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE);
}
// This snippet shows the system bars. It does this by removing all the flags
// except for the ones that make the content appear under the system bars.
private void showSystemUI() {
mDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
Справка:
https://developer.android.com/training/system-ui/immersive.html
Edit:
Протестировано на Android 4.3 (API 18) и Android 4.1 (API 16) с помощью клавиш Soft Nav.
@Override
protected void onCreate(Bundle b) {
super.onCreate(b);
setContentView(R.layout.main);
int mUIFlag = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
}
Подробнее читайте http://developer.android.com/reference/android/view/View.html#setSystemUiVisibility(int)
Ответ 2
- Скрыть строку состояния:
Отличное решение, которое я нашел для этой проблемы, установив для каждого Activity theme
и windowSoftInputMode
следующие значения:
<activity android:name=".MyActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:windowSoftInputMode="adjustResize"> <!-- theme : to set the activity to a full screen mode without a status bar(like in some games) -->
</activity> <!-- windowSoftInputMode : to resize the activity so that it fits the condition of displaying a softkeyboard -->
для дополнительной информации см. здесь.
- Скрыть панель уведомлений:
Есть Два способа:
1 - откорректируйте свое устройство, затем откройте устройство в adb window command
, а затем запустите следующее:
adb shell >
su >
pm disable com.android.systemui >
и вернуть его, просто сделайте то же самое, но измените disable
на enable
.
2 - добавьте следующую строку в конец вашего устройства файл build.prop:
qemu.hw.mainkeys = 1
чтобы вернуть его, просто удалите его.
и если вы не знаете, как редактировать файл build.prop:
- загрузите EsExplorer на свое устройство и выполните поиск build.prop, затем измените его разрешения на чтение и запись, наконец добавьте строку.
- загрузите специализированное приложение для редактора build.prop, например build.propEditor.
- или ссылайтесь на эту ссылку.
Ответ 3
В новом Android 4.4 вы должны добавить эту строку:
View.SYSTEM_UI_FLAG_IMMERSIVE;
Итак, новое рабочее решение atleast on nexus4 4.4.2 -
final int mUIFlag =
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LOW_PROFILE
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE;
Только Immersive не будет работать, хотя он работает в сочетании с другими флагами. см. документацию для более подробной информации.
Затем вы добавляете в действие активизацию этой установки, как показано здесь ранее (я просто добавляю для согласованности)
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
Ответ 4
Я сделал 2 макета для обычного размера и один для полноэкранного и внутри полного экрана. Я получаю размер устройства и назначаю его видеоплееру.
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getRealSize(size);
int w=size.x;
int h=size.y;
videoPlayer.setFixedSize(w, h);
Ответ 5
Я думаю, что вы не можете скрыть системную панель в Android 4.0 > (только в планшетах, в телефонах, которые вы должны иметь)
Что вы можете сделать, это скрыть значки и отключить некоторые кнопки (все, кроме дома)
Вы можете попробовать следующее:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
}
Также для отключения кнопок:
Это для кнопки "Назад":
public boolean onKeyDown(int keyCode, KeyEvent event) {
return false;
}
Это для меню:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
try
{
if(!hasFocus)
{
Object service = getSystemService("statusbar");
Class<?> statusbarManager = Class.forName("android.app.StatusBarManager");
Method collapse = statusbarManager.getMethod("collapse");
collapse .setAccessible(true);
collapse .invoke(service);
}
}
catch(Exception ex)
{
}
}
Ответ 6
Видеоплееры работают в полноэкранном режиме, установив
myView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
setFlags()
до setContentView(View)
Это покажет системную панель для любого взаимодействия с пользователем, как это делают видеоплееры.
Ближе всего вы можете запустить полноэкранный режим приложения, установив в режиме Lights Out, системные кнопки будут отображаться в виде точек.
Чтобы использовать режим отключения света, просто используйте любое представление в своей деятельности и вызовите
anyView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Для скрытия навигационной панели используйте это в onStart()
, чтобы каждый раз, когда вы добираетесь до этого действия, он будет находиться в полноэкранном режиме.
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Надеюсь, это поможет!
Ответ 7
Android Версия: 4.2.2 - Прибор: Vega Tablet
Android-приложение для скрытия состояния и системной панели и отображения полного экрана Я выполнил следующие шаги.
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
MainActivity.java
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(0x10);
setContentView(R.layout.activity_main);
Над кодом отлично работал для моего приложения.
Ответ 8
перейдите в свой манифест и добавьте это в свою активность.
<activity
android:name="yourPackage.yourActivity"
android:theme="@android:style/Theme.Black.NoTitleBar">