пятница, 10 августа 2012 г.

Небольшие хитрости разработки для Android

Как сделать приложение на весь экран?

Обычно на это предлагают написать следующие функции при создании Activity.
//чтобы небыло заголовка активити
requestWindowFeature(Window.FEATURE_NO_TITLE);
//убрать статусную строку
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Т.е. одной функцией вы убираете заголовок окна, а другой функцией убираете статусную строку, где пишется время, уровень заряда, уровень сигнала. Можно таким способом и что-то одно убрать, а не сразу оба если не преследуется задача полноэкранного приложения. Кажется задача достигнута, приложение запущено на весь экран. Но приглядитесь внимательно, попробуйте  закрасить сплошным светлым цветом весь экран, и вы заметите что в самом вверху видна небольшая полоска тени, т.е самый верх экрана имеет полоску шириной где-то в 1-2 пикселя немного темнее чем основной фон.

Оптимальный способ

Чтобы не было никакой тени и приложение было на весь экран просто добавьте в манифест вашего приложения для нужного вам активити следующую строчку.
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
Данная строчка говорит о том что созданное активити будет на весь экран. Также можно и другие темы применить которые содержат в названии  NoTitleBar.Fullscreen.

Как программно управлять яркостью экрана?

Есть множество способов как это можно реализовать, например:
  • Использовать глобальные настройки системы. НО для этого вам понадобится объявить разрешение в манифесте для получения права менять настройки системы, что у ваших потенциальных пользователей может вызвать вопросы.
  • Или можно использовать сторонние библиотеки. НО вы становитесь зависимые от других разработчиков, их багов, а также возможно и тут вам придется добавить разрешение в манифест на получение определенных прав.

Оптимальный способ

Можно менять яркость непосредственно компонента Layout. В итоге вам не надо никаких разрешений, все изменения яркости применяются мгновенно, и это не влияет на всё приложение, а только на то где вам нужно и где используется компонент.
WindowManager.LayoutParams layoutParam=getWindow().getAttributes();
layoutParam .screenBrightness=1.0f; //значения от 0,0 до 1,0
getWindow().setAttributes(lp);
Значение 0,0 соответствует минимальному уровню яркости, а значение 1,0 максимальному.

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

Отправить комментарий