#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. Здравствуйте, спасибо за ответ, но уведомления о всплывающих окнах все равно могут всплывать, это нехорошо, если мы просто скроем приложение, и это также можно было бы сделать в манифесте, если бы мы хотели его скрыть.