Есть ли способ определить, работает ли приложение Android в полноэкранном режиме?

Мне просто интересно, был ли простой способ увидеть, работает ли приложение, работающее на Android, в полноэкранном режиме. Есть ли способ запросить андроид, чтобы узнать, находитесь ли вы в полноэкранном режиме или что-то в этом роде?

Solutions Collecting From Web of "Есть ли способ определить, работает ли приложение Android в полноэкранном режиме?"

Я думаю, Commonsware хотел сказать getWindow (). GetAttributes (), а не getWindow (). GetFlags (); Поскольку getFlags не существует, насколько я знаю. По крайней мере, это не в доке.

Вам нужно прочитать getWindow (). GetAttributes (). Flags, который является int.

 WindowManager.LayoutParams lp = getWindow (). GetAttributes ();
 Int i = lp.flags;

FLAG_FULLSCREEN = 1024 согласно документации по Android. Поэтому ваш флаг – 11-й укус lp.flags

Если этот укус = 1, активируется полноэкранный режим.

Чтобы закончить ответ Сигванна:

boolean fullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) != 0; boolean forceNotFullScreen = (getWindow().getAttributes().flags & WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN) != 0; boolean actionbarVisible = getActionBar().isShowing(); 

Вы можете выяснить, работает ли ваша Activity в полноэкранном режиме через getWindow().getFlags() .

Однако, если «приложением» вы ссылаетесь на чье-либо приложение, тогда ответ будет отрицательным.

Следуя информации Сигванна, вот мой код ….

 public boolean isFullScreen() { int flg = getWindow().getAttributes().flags; boolean flag = false; if ((flg & WindowManager.LayoutParams.FLAG_FULLSCREEN) == WindowManager.LayoutParams.FLAG_FULLSCREEN) { flag = true; } return flag; } 

Простой, но работает!

Начиная с api11 теперь есть способ обнаружить, что использование View.setOnSystemUiVisibilityChangeListener

В документации по интерфейсу слушателя указано следующее:

Определение интерфейса для обратного вызова, вызываемого при изменении видимости строки состояния. Это сообщает глобальные изменения состояния пользовательского интерфейса системы, а не то, что запрашивает приложение.

Я не знаю, есть ли способ сделать это до Honeycomb.

Activity.hasWindowFocus () указывает вам, является ли ваше собственное действие видимым для пользователя. Но, как замечает CommonsWare, гораздо сложнее сказать, находится ли другое действие в верхней части стека. Вы можете попробовать запросить ActivityManager (например, ActivityManager.getProcessTasks () ), но его методы не дают точного ответа на ваш вопрос.

Вы можете использовать что-то вроде этого;

 findViewById(android.R.id.content).getHeight(); getResources().getDisplayMetrics().heightPixels; 

И проверить равенство; надеюсь это поможет;

Есть хороший хак, используя абсолютную позицию экрана на экране. Просто проверьте положение любого верхнего левого представления вашего макета (может быть невидимым), если он находится в позиции 0,0. Как это:

 /** * Check if fullscreen is activated by a position of a top left View * @param topLeftView View which position will be compared with 0,0 * @return */ public static boolean isFullscreen(View topLeftView) { int location[] = new int[2]; topLeftView.getLocationOnScreen(location); return location[0] == 0 && location[1] == 0; }