Сегодня мы займемся разработкой виджета, виджет будет похож на игру орел и решка. Используем EmptyActivity, никаких больше пока настроек делать не будем.
Содержание:
Итак, давайте поработаем с AndroidManifest, после раздела Activity давайте напишем receiver с android именем точка виджет.
Для этого чтобы красным у нас не горела ошибка, давайте создадим новый Java класс, который будет носить такое же имя как и у нашего ресивера класс Widget.
Как видите, недостаточно только назвать его виджетом, давайте мы продолжим настройки в android манифесте потом вернемся к нашему классу Widget.java.
Настройка AndroidManifest
Создадим действия в интент фильтре
Закроем скобочку и напишем метадату и путь к ресурсу виджета
там где будет храниться описание нашего виджета папкам xml-файл виджета, нам нужно будет создать папку xml.
Новые файлы и директория
Так давайте создадим новую директорию, назовем ее xml и в ней щелкнув правой кнопкой создадим новый xml-файл с названием widget, позже мы вернемся к его настройкам.
Обратите внимание, я сделал две картинки в png формате, это изображение 5 рублей, называются файлы а5 и r5, соответственно, аверс 5 реверс 5, обозначения монеты.
В файл Widget.java у нас унаследуется от класса AppWidgetProvider
и этого изменение было достаточно для того, чтобы ос android манифестом мы могли закончить.
Слой виджета
Давайте создадим еще один новый слой LayOut widget, в нем будет хранится отображение нашего виджета.
Изменим слой на RelativeLayOut, на него нам нужно будет добавить imageview, картинка на которой будет отображаться наш виджет, наш пятачок, наша монетка.
Свойства imageview:
вот такие настройки, этого достаточно, можем закрыть файл.
Итак перейдем к виджету xml, которой находятся папки в xml, переименуем слой в appwidget-provider
.
Добавим минимальная ширина 40dp, минимальная высота 40dp, виджет можно будет увеличивать или уменьшать, изменение размера resizeMode
горизонталь и вертикаль, то есть можно будет его растянуть как по горизонтали так и по вертикали.
preview image
: это картинка которая будет отображаться одну я использую опять аверс 5 с орлом сторона монетки, тип widget категория домашний экран, home_screen
и сам слой который будет вызываться, это тот слой который мы указали в LayOut виджет и период обновления в миллисекундах какое-то просто большое число тут всем почти 7 миллионов миллисекунд.
С файлом виджет мы закончили, файл MainActivity практически не нужен, никаких изменений вносить в него не будем, сейчас поработаем с файлом Widget.java.
Нам нужно будет создать несколько процедур: onUpdate
, onReceive
, getPendingSelfIntent
, setImage
.
Объявим строковую переменную SYNC_CLICKED
:
и начнем писать основной код виджета.
onUpdate
В функции onUpdate
реализован Random
генератор случайных чисел, позволяющий менять рисунок виджета, в зависимости от значения. В нашем случае будет меняться орел на решку или наоборот.
onReceive
В функции onReceive
при приеме действия, предусмотренного интентом, также происшодит генерация значения и отображается всплывающее сообщение, с текстом "Орел или решка? )))".
getPendingSelfIntent
В функции getPendingSelfIntent
вызываться отложенное событие.
setImage
А вот и наш генератор случайных чисел,setImage
вернет числовое значение, если Random
выдаст 0, то в виджете показывается аверс монетки, если 1 то реверс.
На этом написание кода виджета - игры закончено, сохранимся, запустим на исполнение в эмуляторе.
Android studio скомпилирует файл, у нас запустится первый раз наша активность, закроем ее и перейдем в виджеты, выкинем на пустой стол нашу монетку и вот по клику на нее происходит изменение ее состояние
Давайте теперь займемся изменениями не будем делать 40dp на 40dp, хотя нашу монетку в принципе можно растянуть, чтобы она была больше, почти на весь экран.
Давайте изначально сделаем минимальную ширину и высоту 80dp на 80dp и после перезапуска, монетка приняла практически свой реальный размер.
В принципе наш виджет похож на какую-то небольшую игру, которую вполне можно скачать с play market.
Давайте посмотрим как будет выглядеть это же этот-же виджет это же приложение если установить его на настоящие мобильный телефон или смартфон.
В принципе, все действия, те же самые, точно также можно увеличить наш виджет, нажимая на него, меняется состояние, при этом иногда получается несколько раз даже нажимаешь на монетку и ничего, никаких изменений нет, но на самом деле просто повторяется одно и то же значение, если у нас там их больше было, возможно наш виджет вел бы себя немного по-другому.
Ну что же наверное, для первого раза достаточно, и так этот виджет получился достаточно сложным, надо было сделать что-то попроще...)))
Cкачать архив для ознакомления - проект виджет - игра "Орел и решка":
Смотрите видео - Android Studio Как сделать виджет-игру Орел или решка:
Рекомендуем смотреть видео в полноэкранном режиме, в настойках качества выбирайте 1080 HD, не забывайте подписываться на канал в YouTube, там Вы найдете много интересного видео, которое выходит достаточно часто. Приятного просмотра!
С уважением, авторы сайта Компьютерапия
Понравилась статья? Поделитесь ею с друзьями и напишите отзыв в комментариях!
Связанные статьи
Новые статьи
- Android приложение для начинающих гитаристов, пишем андроид приложение с аккордами для гитары - 05/09/2021 13:14
- Android Studio: получение JSON из базы данных с помощью PHP. Урок № 4 - 21/02/2021 07:12
- Android Studio: получение JSON в ListView с сервера на хостинге. Урок № 3 - 04/12/2020 21:46
- Android Studio: получение JSON в ListView и ArrayAdapter. Урок № 2 - 04/12/2020 20:39
- Android Studio: получение JSON в RecyclerView и CardView. Урок № 1 - 04/12/2020 19:40
- JS база данных и ANDROID STUDIO. Часть 3 - 15/12/2019 06:40
- Уведомления - Notifications в Android Studio - 16/04/2019 18:14
- Блютуз подключение в Android (проект для Arduino). Часть 1. - 12/04/2019 17:14
- Установка android studio и настройка SDK на VirtualBox с нуля - 19/01/2019 11:52
Предыдущие статьи
- Android Studio: Как сделать боковое меню с помощью NavigationDrawer - 05/04/2018 20:35
- Android Menu, как сделать меню андроид - 08/03/2018 14:44
- Создание подписанного приложения для android. Generate Signed APK. - 17/02/2018 09:50
- Android and Jsoup. Парсим вебсайт на вордпрессе. Расписание уроков - часть 3 - 15/01/2018 18:25
- Создание расписания уроков для андроид устройств. Часть 2. База данных SQLITE и фрагменты - 13/12/2017 19:49
- Создание расписания уроков для андроид устройств. Array Adapter для фрагментов. - 06/12/2017 15:07
- Создание фрагментов и использование вкладок для Android - 19/11/2017 05:16
- SplashScreen в Android: пишем заставку - 18/08/2017 19:06
- Диалог в андроид: пишем приложение в Android Studio - 13/08/2017 11:27
- Intent - Android приложение с несколькими Activity - 17/06/2017 17:05
- Создание списка ListView и ArrayAdapter в Android Studio - 09/06/2017 20:38
- Используем SharedPreferences для android - 05/05/2017 18:01
- Toast в Android Studio: пишем приложение с сообщениями - 04/05/2017 17:38
- Приложение-браузер для android устройств - 03/03/2017 16:56
- Android приложение за 5 минут. Часть 2 - 03/03/2017 16:33
- Создать андроид приложение за 5 минут - 22/11/2016 18:08
- Создание эмулятора Android, настройка AVD - 04/09/2016 15:19
- Установка Android Studio, настройка SDK - 04/09/2016 12:04
- Как начать программировать начинающим пользователям для андроид - 04/09/2016 10:28