Баннеры — один из самых популярных видов рекламы в мобильных приложениях.
Они не занимают много места, как, например, полноэкранная (межстраничная) реклама.
И позволяют комбинировать их с элементами пользовательского интерфейса приложения.
Их можно добавлять на разные экраны приложения.
Прочитав эту статью, вы узнаете, как лучше вставлять баннеры так, чтобы они не мешали пользователю и не портили внешний вид приложения.
В этом случае вам не придется менять макет xml и вносить множество изменений в код приложения.
Вы можете встроить баннеры в готовое приложение, добавив всего несколько строк кода.
Описанный в статье подход универсален; вы можете использовать его для API любого рекламного сервиса.
Статья будет интересна как новичкам, так и опытным разработчикам.
Если вы новичок в разработке, то для понимания темы статьи вам не потребуются какие-либо глубокие знания.
Достаточно понимания основных концепций разработки под Android. А опытные разработчики могут найти в нем готовое решение, которое можно реализовать в домашних условиях.
Но инициализация рекламного сервиса, работа с конкретными рекламными API и кэширование выходят за рамки этой статьи.
Чтобы решить подобные проблемы, обратитесь к руководству для вашего конкретного рекламного сервиса.
Идея статьи возникла из-за того, что в одном из наших Android-приложений нам нужно было разместить баннеры в нескольких местах, но сделать это нужно так, чтобы не портить внешний вид приложения и не блокировать элементы управления с помощью баннеры.
Код приложения уже был написан полностью и нам очень не хотелось его переделывать, поэтому мы постарались сделать так, чтобы добавление баннеров было максимально простым, корректным и не влияло на работу существующего кода.
Другая причина в том, что нам нужно было создать платную версию приложения без рекламы.
А если бы реализация баннеров потребовала бы изменения макета xml, то это сильно усложнило бы создание версии без рекламы.
Чтобы то, что я пишу, было более ясным и понятным, посмотрите на следующий скрин:
«Элементы пользовательского интерфейса занимают все пространство экрана.
Свободных мест нет. В этом случае мы можем разместить баннер внизу или вверху.
Вариант размещения баннера внизу предпочтителен, так как баннер будет расположен в стороне от кнопок и пользователь не будет касаться баннера при случайной попытке нажать «Выбрать» или «Назад».
Нам нужно разместить баннер внизу экрана под GridView с фотографией.
Поскольку баннер загружается по сети, он может быть доступен не сразу или не всегда.
Следовательно, его нельзя отобразить в любой момент времени, и внизу может остаться пустое место.
Если оставить это пустое место, то получится очень некрасиво.
Это будет выглядеть так, будто это грубый недостаток дизайна интерфейса.
Если мы разместим баннер поверх GridView, он закроет части фотографии и создаст неудобства для пользователя, что тоже недопустимо.
Тогда сводим задачу к тому, что нужно сделать так, чтобы не было дополнительных отступов.
А когда баннер загрузится и его можно будет показать, динамически добавьте отступ внизу и покажите баннер.
С другой стороны, нам необходимо сделать код размещения баннера максимально простым, без сложных инициализаций.
Те.
передача идентификаторов элементов или ссылок на контейнеры (ViewGroup) недопустима.
Вставить баннеры в xml макет каждого экрана, куда нам нужно добавить баннер, также невозможно, т.к.
потребуются существенные изменения.
В идеале код установки баннера должен выглядеть так:
Всего одна строка кода, один вызов метода, которому передается только ссылка на Activity, в которой будет размещен баннер.Ads.showBottomBanner(activity);
Этот код можно вставить в метод Activity onCreate.
Динамическое добавление отступов
Чтобы реализовать это, нам нужно знать, что находится в представлении, и получить к нему доступ.Не существует прямого метода доступа к представлению содержимого в действии.
Но благодаря никам пользователей из StackOverflow мы нашли решение .
Вам нужно пройти через Окно, в котором находится Активность.
У Window есть DecorView, а у DecorView есть ContentView. Первый дочерний элемент в нем — это ViewGroup из XML-макета.
Итак, нам требуется Window, затем мы получаем DecorView, затем мы получаем ContentView, а затем мы получаем первого дочернего элемента ContentView. И для этого дочернего элемента меняем отступ: public static void setupContentViewPadding(Activity activity, boolean top, int margin) {
Теги: #Android #деятельность #просмотр #баннер #баннеры #баннеры #реклама #баннеры #ui #разработка под Android
-
Сюда Ушли Ваши Детские Воспоминания
19 Oct, 24