можем ли мы программно изменить положение строки состояния или панели уведомлений

#java #android #statusbar

#java #Android #строка состояния

Вопрос:

Я заблокировал свое приложение только в портретном режиме и сам изменил ориентацию, но понял, что в альбомном режиме строка состояния остается неизменной, и пользовательский интерфейс будет плохим.

Теперь, когда я разработал все соответствующим образом, единственное обходное решение, по-видимому, для меня — это изменить положение строки состояния программно, поскольку я не (или на самом деле не могу на данный момент) учитывать изменения ориентации системы.

Возможно ли это? Как изменить положение строки состояния программно? Только внутри моего приложения и восстановить после выхода?

Ниже я проиллюстрировал желаемый эффект:

во-первых, приложение заблокировано в портретном режиме, и когда я поворачиваю устройство, представления приложения поворачиваются, поскольку я анализирую необработанные данные датчика и применяю поворот, но в этом случае строка состояния не вращается (поскольку приложение заблокировано в портретном режиме, и у меня есть доступ только к изображениям приложения).просмотры для поворота):
введите описание изображения здесь

Псевдокод того, как я сделал выше, таков:

 View views[] = new View[]{view1, view2, view3, view4 ....};
float rotationAngle = parseRawSensorData();//typically accelerometer input
for(View view: views){
    rotateWithAngle(rotationAngle);
}  
  

Поэтому представления вращаются, но строка состояния прикреплена.

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

т.е. повернуть строку состояния в соответствии с полученными мной данными sensordata.

Комментарии:

1. хороший вопрос, я искал что-то подобное в прошлом, но я отказался от возможности найти какие-либо решения. Удачи в поиске, я ответил на ваш вопрос

2. @juztcode, большое спасибо, очень ценю это. 🙂

3. добавление некоторого кода и изображений действительно помогло бы!!

4. @kelvin, я добавил соответствующий код и несколько иллюстраций.

5. как насчет того, чтобы просто скрыть строку состояния?

Ответ №1:

Строка состояния является частью системы Android, а не частью вашего приложения. Таким образом, вы не можете управлять этим из своего приложения.

Комментарии:

1. нет ли какого-нибудь способа указать системе из приложения, чтобы она ее где-нибудь разместила?

2. если им нельзя управлять из приложения, откуда им можно управлять?

3. Люди, разрабатывающие Android, могут управлять строкой состояния.

4. @Ridcully, я знаю, что разработка native c NDK действительно низкая, как в сравнении, хотя я не очень знаком с этим. Знаете ли вы что-нибудь, что могло бы этого достичь?

5. Даже с помощью NDK вашему приложению не разрешено изменять системные данные, такие как строка состояния.

Ответ №2:

Вместо поворота строки состояния вы можете просто скрыть ее при использовании своего приложения.

Импорт:

 import android.view.WindowManager
  

И напишите это:

 getWindow().setFlags(
        WindowManager.LayoutParams.FLAG_FULLSCREEN,
        WindowManager.LayoutParams.FLAG_FULLSCREEN
    )
  

Комментарии:

1. Здравствуйте, спасибо за ответ, но уведомления о всплывающих окнах все равно могут всплывать, это нехорошо, если мы просто скроем приложение, и это также можно было бы сделать в манифесте, если бы мы хотели его скрыть.