Полноэкранное приложение 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">