- Темы и стили в Android без магии. И как их готовить с SwitchCompat
- Содержание
- Введение
- Новый стиль для SwitchCompat
- Стиль в верстке
- Стиль в теме. Тема назначается через Manifest
- Стиль в теме. Тема назначается программно
- Другие View
- Ресурсы
- [Советы] Как создать собственную тему(подробная инструкция)
- Как создать, установить и поменять тему на андроид
- На операционной системе андроид установить и поменять новую тему можно тремя способами:
- Для более продвинутых есть возможность создавать собственные темы
- Android с нуля: создание стилей и тем
- 1. Создание стилей
- 2. Расширение стилей
- 3. Создание тем
- 4. Применение тем
- Заключение
Темы и стили в Android без магии. И как их готовить с SwitchCompat
В предыдущей статье мы рассмотрели как использовать темы и стили на уровне кода, на примере кастомной view. В этой статье давайте разберем несколько способов стилизации стандартного ui элемента, а в частности SwitchCompat.
Содержание
Введение
Не всегда оформление по умолчанию стандартного UI элемента устраивает дизайнера. Давайте разберем, как поменять внешний вид элемента на примере SwitchCompat.
Для решения задачи нам нужно:
- Создать свой стиль для SwitchCompat.
- Каким-то образом задать этот стиль SwitchCompat.
Назначить стиль SwitchCompat можно несколькими способами, например:
- Указывать для каждой view в верстке экранов через атрибут style.
- Создать тему с переопределенным атрибутом switchStyle и назначить эту тему в манифесте для всего приложения или конкретной активити. Это изменит внешний вид view для всего приложения/активити.
- Тему также можно установить программно, в коде активити. При необходимости ее можно менять «на лету».
Новый стиль для SwitchCompat
В ресурсах создадим новый стиль MySwitchStyle, наследуем оформление от Widget.AppCompat.CompoundButton.Switch, задав parent. Можно и не наследовать, но тогда придется указать все значения, даже которые мы не планируем менять.
Чтобы что-то изменить, надо переопределить требуемые атрибуты. Атрибуты можно посмотреть в документации.
В документации видим несколько атрибутов. Они указаны в виде, как если бы мы обращались к ним в коде (например, вот так R.styleable.SwitchCompat_android_thumb). Я расшифрую только часть из них, чтобы не было сомнений. Назначение остальных несложно понять из документации.
В коде | В xml |
SwitchCompat_android_thumb | android:thumb |
SwitchCompat_thumbTint | thumbTint |
SwitchCompat_track | track |
SwitchCompat_trackTint | trackTint |
- android:thumb — ресурс для подвижной части SwitchCompat
- track — ресурс для неподвижной части SwitchCompat
- thumbTint — позволяет окрашивать подвижную часть в нужные цвета в зависимости от состояния SwitchCompat
- trackTint — позволяет окрашивать неподвижную часть в нужные цвета в зависимости от состояния SwitchCompat
В качестве примера изменим цвет thumb (кружочка) — пусть во включенном состоянии он будет оранжевым, в выключенном — зеленым. Некрасиво, но наглядно.
Нам понадобится селектор в папке color наших ресурсов. Файл selector_switch_thumb.xml
Теперь зададим атрибут thumbTint в нашем стиле.
Теперь все SwitchCompat, получившие каким-то образом стиль MySwitchStyle, будут выглядеть по-новому.
Стиль в верстке
Самый тривиальный и негибкий способ.
- Стиль применяется при inflate ресурса layout.
- Повлиять программно мы никак не можем.
- Указывать каждый раз в верстке неудобно. И можем забыть.
Стиль в теме. Тема назначается через Manifest
Создаем тему AppTheme и задаем значение атрибуту switchStyle. Значением является наш стиль MySwitchStyle.
Тема может быть указана в манифесте для всего приложения
Или для конкретной активити
Теперь все SwitchCompat будут иметь новый внешний вид. Без изменения в верстке.
- Плюсы — Можем менять внешний вид для всего приложения сразу.
- Минусы — налету менять не получится.
Стиль в теме. Тема назначается программно
Для того, чтобы установить тему для активити программно, нужно вызвать метод активити setTheme(themeResId).
Давайте менять тему активити в зависимости от состояния Switch.
- Устанавливаем тему программно, вызвав setTheme. Метод надо вызывать до super.onCreate(savedInstanceState). В onCreate у нас происходит инициализация фрагментов (когда они есть).
- Задаем начальное состояние Switch в зависимости от темы.
- Устанавливаем листенер, который при изменении Switch меняет тему в настройках и перезапускает активити через метод активити recreate().
Результат
Другие View
Чтобы переопределить стиль для SwitсhView для всего приложения, мы переопределили значение атрибута switchStyle, можно догадаться, что такие атрибуты есть и для других View.
- editTextStyle
- checkboxStyle
- radioButtonStyle
Как их искать? Я просто смотрю исходники, через Android Studio.
Заходим в тему, зажимаем ctrl, кликаем на родителе нашей темы. Смотрим, как описывают тему ребята из Google. Смотрим, какой атрибут определяется и от какого стиля можно отнаследоваться. Пользуемся.
Кусок из темы Base.V7.Theme.AppCompat.Light.
Ресурсы
Статья не претендует на полный справочник. Код умышленно сокращен. Я ставил задачу дать общее понимание — как это работает и зачем это нужно. Дальше все легко ищется в документации и в стандартных ресурсах.
Источник
[Советы] Как создать собственную тему(подробная инструкция)
Привет Mi community |
В этой теме я расскажу как создать свою тему, имея при этом только базовый уровень знаний!
Итак:
скачать MIUI Theme Editor из Google Play
При открытии выскачит такое окно
Screenshot_2019-09-03-13-21-29-350_com.mixapplications.miuithemeeditor[1].png (162.26 KB, Downloads: 37)
2019-09-03 18:24:40 Upload
Screenshot_2019-09-03-13-21-29-350_com.mixapplications.miuithemeeditor[1].png (161.59 KB, Downloads: 36)
2019-09-03 18:26:52 Upload
Screenshot_2019-09-03-13-21-29-350_com.mixapplications.miuithemeeditor[1].png (162.03 KB, Downloads: 31)
2019-09-03 18:29:02 Upload
Screenshot_2019-09-03-13-29-55-181_com.mixapplications.miuithemeeditor[1].png (341.1 KB, Downloads: 46)
2019-09-03 18:31:21 Upload
Иконки приложений:
— Редактировать маску значков: здесь редактируется иконки приложений и иконки папок, выбираете на свой вкус!
— Редактировать динамические значки: тут можно редактировать иконки: Календаря, погоды и часов, это на свой вкус!
— Импортировать весь пакет значков: данная фунция нужна для того, если у вас уже всё готово и просто экспортируете его из файла!
— Выбрать значки вручную: в это фунции вы можете редактировать иконку для любого приложения!
— Дополнительный: в этом пункте вы можете редактировать размер иконки и его цвет.
Строка состояния:
— Аккумулятор: редактирует значёк батареи в верхней панели.
— Сигнал: редактирует значки уровня сигнала сотовой связи.
— Wi-Fi: редактирует иконку Wi-Fi думаю тут понятно.
Панель Уведомлений: — Цвет панели Уведомлений: в этом пункте можно отредактировать цвет панели управления(когда её открываете).
— Ярлыки значков панели: Редактирует значки всех фунций телефона.
— Изменения цвета: Даёт возможность дополнительно изменять цыета на панели уведомлений(для опытных).
Обои:
В этом пункте выбирается картинка которая будет стоят на главном экране.
Блокировка экрана:
В этом пункте выбирается картинка которая будет стоять на экране блокировки.
Далее нажимем на готово и сохраняем и последующее применяем для теста.
На этом всё)
Будут вопросы обязательно отвечу!
Всех благ.
Источник
Как создать, установить и поменять тему на андроид
Купив новое устройство – пользователь начинает настраивать его «под себя», и в самом начале встает вопрос установки новой темы. Тема – неотъемлемая часть дизайна мобильного устройства на андроиде, путем ее замены можно полностью поменять интерфейс.
Сейчас очень популярно использование виджетов – это специальные программы, обеспечивающие ускорение и простоту использования устройства. Например, можно вынести на главный экран часы, прогноз погоды, ярлыки к файлам и приложениям, это делает рабочий стол более функциональным и очень экономит время пользователя.
На операционной системе андроид установить и поменять новую тему можно тремя способами:
- Скачать с Google Play. Это можно сделать непосредственно с устройства или с компьютера. Для этого:
- Зайти на Google Play.
- В строке поиска ввести: «theme».
- Выбрать понравившуюся тему.
- Нажать «Установить».
Плюсы этого способа в том, что он очень прост, а минус – в том, что большинство тем в Goggle Play платные.
- Установить тему через программу синхронизации с компьютером. Темы устанавливаются также, как приложения, для этого можно использовать любую программу для синхронизации с функцией установки приложений.
В MyPhoneExplorer для этого нужно нажать на кнопку «Приложения» в меню «Файлы», затем – на кнопку «Установить». Выбрать файл темы (с расширением .apk), после чего на устройстве подтвердить установку.
Недостатки этого метода:
- нужен компьютер под рукой
- требуется установка программы-синхронизатора
- Воспользоваться приложением AppsInstaller. Это программа, при помощи которой можно устанавливать приложения на Android-устройства непосредственно из его памяти.
- Загрузить на устройство и установить программу AppsInstaller.
- Скопировать файл .apk в память устройства (не имеет значения, на внутреннюю память или SD-карту).
- Запустить AppsInstaller, программа проведет поиск в памяти устройства файлов с нужным расширением и выведет их список.
- Выбрать нужную тему.
Все эти способы доступны рядовому пользователю.
Для более продвинутых есть возможность создавать собственные темы
- Взять какую-либо готовую тему на андроид.
- Декомпилировать ее, например, с помощью приложения APKTool.
- Открыть папку и в ней найти картинки. Отредактировать их в графическом редакторе или полностью заменить на свои.
- Цвета можно поменять в XML.
- Компилировать (той же программой для тем APKTool).
- Присвоить приложению название (Программой ZipSinger или аналогичной).
- Установить созданную тему одним из 3 способов.
Помимо различных авторских заставок среди пользователей также популярны темы, имитирующие другую операционную систему.
Например, Launcher 8 free для андроид позволяет оформить устройство в стиле Windows 8, при этом можно самостоятельно настроить цвета, а также создать макеты рабочих столов с помощью различных ярлыков и виджетов.
Доступны более сотни цветовых оформлений, анимация, имитация светодиодной подсветки и живая галерея. Лаунчер доступен для бесплатной скачки в Google Play.
Бесплатно можно скачать iOS 8 Launcher — это тема айфон для андроид, т.е. приложение поможет внешне превратить ваш смартфон на android в iPhone или iPad с операционной системой iOs 8.
Лаунчер позволяет настроить приятный домашний экран с удобными виджетами и эффектной трансформацией, который к тому же будет сразу отображать системные сообщения, установить локскрин в стиле iOS, выбирать лучшее из тысячи тематических иконок и сотен обоев для рабочего стола. При этом приложение весит всего 8 мегабайт.
Источник
Android с нуля: создание стилей и тем
Как разработчики Android, мы склонны в первую очередь фокусироваться на функциональности наших приложений. Однако одной функциональности достаточно редко хватает. В Google Play, где сегодня находится более миллиона приложений, внешний вид так же важен, как и функциональность, если не больше. Если вам трудно в этом поверить, я предлагаю вам быстро взглянуть на приложения в разделе «Топ чарты» в Google Play.
Существует два подхода к изменению внешнего вида приложений для Android. Первый подход включает прямое изменение свойств представлений в XML-файлах макета. Такой подход возможен только в том случае, если вы работаете над простым приложением, которое имеет небольшое количество видов и активностей. Второй подход предполагает создание и использование пользовательских стилей и тем. Если вы знакомы с веб-разработкой, первый подход сродни использованию встроенных стилей CSS, а второй подход сродни использованию таблиц стилей.
В этом уроке вы узнаете, как создавать пользовательские стили и темы для ваших приложений для Android. Вы также узнаете, как использовать инструменты и шорткаты Android Studio, которые облегчают создание стилей.
1. Создание стилей
Стили, очевидно, применяются к компонентам пользовательского интерфейса. Поэтому давайте начнем с создания новой пустой активности и добавления двух представлений в ее XML-файл макета.
Как видно из приведенного выше кода, свойства, такие как layout_width и layout_margin , явно включены в определение каждого представления.
Чтобы создать новый стиль для первого вида, щелкните его правой кнопкой мыши и выберите «Рефакторинг»> «Извлечь»> «Стиль».
Теперь вы увидите диалоговое окно, в котором вы можете указать имя стиля, а также выбрать атрибуты, которые должны быть в него включены. Пусть имя будет MyBox и выберите все атрибуты, кроме background .
Когда вы нажмете OK, вы увидите, что код для первого вида изменился.
В представлении теперь есть атрибут style , который указывает на стиль MyBox . Вы можете взглянуть на определение стиля, открыв res/values/styles.xml.
Как только стиль был создан, его можно применить к любому виду. Например, вот как вы применили MyBox ко второму представлению:
С применяемыми стилями, вот как выглядят два вида в активности:
2. Расширение стилей
Android позволяет создавать стили, которые используют другие стили в качестве основы. Другими словами, он позволяет расширять существующие стили.
Существуют два разных синтаксиса, которые вы можете использовать при расширении стиля. Первый синтаксис часто называют неявным синтаксисом и он использует точечную нотацию. Например, вот как вы создаете два производных стиля, называемых TEAL и CYAN, используя MyBox в качестве родительского стиля:
Как вы могли догадаться, у MyBox.TEAL и MyBox.CYAN есть все свойства MyBox . В дополнение к этим, у них есть свойство android: background.
Второй синтаксис для создания производного стиля обычно называют явным синтаксисом. Он включает использование атрибута parent , значение которого задано как имя родительского стиля. Вот фрагмент кода, который определяет стиль под названием TealBox.
Применение производных стилей ничем не отличается от применения обычных.
Большинство разработчиков используют неявный синтаксис при расширении своих собственных стилей и явный синтаксис при расширении стилей платформы.
3. Создание тем
Все это время мы применяли только стили к представлениям, которые находятся внутри активности. Android также позволяет применять стили для всех видов активностей и приложений. Когда стиль применяется к активности или приложению, он становится темой.
По умолчанию все приложения, созданные с использованием последней версии Android Studio, используют тему AppTheme . AppTheme является потомком известной темы AppCompat, большой и очень всеобъемлющей темы, которая может повлиять на внешний вид почти всех широко используемых представлений.
Вы можете найти определение AppTheme в styles.xml:
AppTheme использует Material Design. Поэтому для создания собственных тем, соответствующих спецификации Material Design, можно использовать AppTheme в качестве родителя. Кроме того, вы можете напрямую использовать Theme.AppCompat в качестве родителя.
Хотя вы всегда можете создавать темы, написав XML-код, помните, что это просто стили — в этом уроке я покажу вам, как использовать редактор тем для Android Studio, чтобы он сделал для вас всю тяжелую работу.
Чтобы открыть редактор тем, откройте меню «Сервис» и выберите Android> Редактор тем.
С правой стороны окна редактора тем вы можете не только управлять существующими темами, но и создавать новые. Левая сторона показывает вам предварительный просмотр результатов внесенных вами изменений в темы.
Чтобы создать новую тему, нажмите раскрывающееся меню Тема и выберите вариант Создать новую тему.
В появившемся диалоговом окне укажите имя новой темы — MyTheme и нажмите OK.
На этом этапе styles.xml будет иметь новую строку, которая выглядит так:
4. Применение тем
Прежде чем применить тему, которую мы создали, добавим несколько широко используемых представлений к активности. Это позволит вам сразу заметить эффекты примененной темы.
Следующий код создает обычную Button , Button без полей, цветную Button , Checkbox , RadioButton , Switch , Seekbar , TextView и EditText .
Со всеми новыми добавлениями макет будет выглядеть так:
Если вы прочитали спецификацию Material Design, я уверен, что вы можете сказать, что в настоящее время активность использует оттенки индиго для colorPrimary и colorPrimaryDark . Для colorAccent используется оттенок розового. Это цвета по умолчанию, указанные в Android Studio. Вы можете найти их шестнадцатеричные эквиваленты в res/values/colors.xml вашего проекта.
Чтобы применить MyTheme , тему, созданную нами на предыдущем шаге, к вашей активности, откройте файл манифеста вашего проекта и добавьте атрибут android:theme в определение активности. Задайте значение @style/MyTheme .
Аналогично, вы можете применить тему ко всему вашему приложению, установив значение атрибута android: theme в определении приложения в @style/MyTheme .
Если вы сейчас посмотрите на свою активность, то она будет выглядеть совсем по-другому.
Заключение
В этом уроке вы узнали, как создавать и применять пользовательские стили и темы Android. Не стесняйтесь использовать эти знания, чтобы придать новые и лучшие виды вашим приложениям. Однако старайтесь не слишком увлекаться — большинство пользователей Android сегодня так привыкли к Material Design, что отклонение от его рекомендаций может их раздражать.
Чтобы узнать больше о стилях и темах, я предлагаю вам ознакомиться с руководством по стилям и темам.
Источник