- Основы верстки для нативных андроид приложений
- FrameLayout
- LinearLayout
- RelativeLayout
- TableLayout
- Alternate Layouts
- Стили
- 7 шаблонов Android для вашего следующего проекта
- Restaurant Finder
- Your Radio App
- Educational App for Preschoolers
- Maintenance Service App
- Taxi Booking App
- Inventory Management App
- Pixel Art
- Android IDE Template Format
- template.xml
- globals.xml.ftl
- recipe.xml.ftl
- Built-in Template Functions
- Built-in Template Parameters
Основы верстки для нативных андроид приложений
( пользоваться не рекомендуется, deprecated )
AbsoluteLayout — означает что каждый элемент верстки будет иметь абсолютную позицию относительно верхнего левого угла экрана задаваемую с помощью координат x и y. Т.е. верхнийлевый угол экрана при AbsoluteLayout имеет координаты x = 0, y = 0.
Позиция указывается в атрибутах элемента android:layout_x и android:layout_y.
Пример кода:
FrameLayout
FrameLayout — тип верстки внутри которого может отображаться только один элемент в строке. Т.е. если внутри FrameLayout вы поместите несколько элементов, то следующий будет отображаться поверх предыдущего.
Пример кода:
LinearLayout
LinearLayout — тип верстки при котором область верстки делится на строки и в каждую строку помещается один элемент. Разбиение может быть вертикальное или горизонтальное, тип разбиения указывается в атрибуте LinearLayout android:orientation. Внутри верстки возможно комбинировать вертикальную и горизонтальную разбивки, а кроме того, возможна комбинация нескольких разных типов верстки например использование LinearLayout внутри FrameLayout.
Пример вертикальной разбивки LinearLayout:
Пример горизонтальной разбивки LinearLayout:
Комбинация нескольких LinearLayout:
RelativeLayout
RelativeLayout — тип верстки при котором позиционирование элементов происходит относительно друг друга и относительно главного контейнера.
За то, каким образом будут позиционироваться элементы отвечают следующие атрибуты:
Атрибуты позиционирования относительно контейнера
- android:layout_alignParentBottom – Низ элемента находится внизу контейнера
- android:layout_alignParentLeft – Левая часть элемента прилегает к левой части контейнера
- android:layout_alignParentRight – Правая часть элемента прилегает к правой части контейнера
- android:layout_alignParentTop – Элемент находится в верхней части контейнера
- android:layout_centerHorizontal – Элемент позиционируется по центру относительно горизонтального размера контейнера
- android:layout_centerInParent – Элемент позиционируется по центру относительно горизонтального и вертикального размеров размера контейнера
- android:layout_centerVertical – Элемент позиционируется по центру относительно вертикального размера контейнера
Атрибуты позиционирования относительно других элементов.
В качестве значений этих атрибутов ставятся id элемента относительно которого будет производится позиционирование.
android:layout_above – Распологает элемент над указанным
android:layout_below – Распологает элемент под указанным
android:layout_toLeftOf – Распологает элемент слева от указанного
android:layout_toRightOf – Распологает элемент справа от указанного
Выравнивание относительно других элементов.
android:layout_alignBaseline – Выравнивает baseline элемента с baseline указаннго элемента
android:layout_alignBottom – Выравнивает низ элемента по низу указанного элемента
android:layout_alignLeft – Выравнивает левый край элемента с левым краем указанного элемента
android:layout_alignRight – Выравнивает правый край элемента с правым краем указанного элемента
android:layout_alignTop – Выравнивает верхнюю часть элемента в соответствие с верхней частью указанного элемента
TableLayout
TableLayout — табличная верстка.
Организует элементы в строки и столбцы таблицы.
Для организации строк служит таг
Alternate Layouts
Alternate Layouts — альтернативная верстка. Позволяет использовать различную верстку для различных ориентаций экрана.
XML для альтернативной верстки помещается в папки проекта:
res/layout-land – альтернативная верстка для landscape UI
res/layout-port –альтернативная верстка для portrait UI
res/lauout-square – альтернативная верстка для square UI
и перед тем как получить макет из res/lauout система проверяет наличие файлов в этих папках.
И в завершении немного о стилях.
Стили
Во первых стили элемента могут быть описаны в атрибутах самого элемента.
Например:
Кроме того стили можно вынести в отдельный xml файл и сохранить его в папке res/values/
Напимер:
Если мы вынесем стили в отдельный файл, то для описания стилей элемента будем использовать атрибут style.
Источник
7 шаблонов Android для вашего следующего проекта
Russian (Pусский) translation by Yuri Yuriev (you can also view the original English article)
Шаблоны проектов — отличный способ учиться на чужой работе. В этой статье перечислены несколько популярных шаблонов Android, доступных на рынке Envato. Если вы ждёте вдохновения или нуждаетесь в помощи с определённой функцией в создании приложения, ищите ответ в одном из этих шаблонов.
Restaurant Finder
Этот шаблон наполнен возможностями и включает в себя даже backend, готовый к развертыванию на сервере. Приложение позволяет искать рестораны поблизости, читать отзывы, делиться в социальных сетях, а также предоставляет возможность заказать столик по email или текстовому сообщению.
Практически каждое современное мобильное приложение обращается к backend, и это ничем не отличается. Шаблон включает в себя backend для хранения ресторанов и профилей пользователей. Имеется панель аналитики, в которой отображаются показатели ресторанов и пользователей приложения. Если вам нужно вдохновение для приложения на основе местоположения, этот шаблон стоит проверить.
Your Radio App
Если вы хотели узнать, как передавать аудио в приложении для Android, этот шаблон достоин внимания. Приложение ориентировано на потоковое аудио с онлайн-радиостанций. Шаблон включает в себя приложение Android с функциями, а также backend для управления радиостанциями, которые пользователи могут прослушивать.
Шаблон совместим как с Android Studio, так и с Eclipse, и опирается на Parse для push-уведомлений. Он также включает AdMob для управления объявлениями. Приложение поддерживает широкий диапазон форматов потоков и имеет красивый, современный интерфейс. Если вы ещё не уверены, download the application из Google Play, чтобы попробовать.
Educational App for Preschoolers
Мобильные телефоны и планшеты — большая радость для детей. Эти устройства дети интуитивно понимают, когда получают в руки. Этот шаблон приложения для самых маленьких, обучает алфавиту и цифрам через звуки и картинки.
Шаблон включает несколько игр, которые вы можете выбрать и учиться. Шаблон совместим с Eclipse и легко настраивается по вашим потребностям.
Maintenance Service App
Всё больше и больше традиционных компаний становятся мобильными, и этот шаблон служит рынку услуг. В дополнение к мобильному приложению шаблон также включает backend. Само приложение обладает широкими возможностями и включает в себя регистрацию пользователя, возможность запланировать обслуживание и даже возможность оставить отзыв клиентам.
Пользовательский интерфейс чист и современен. Приложение совместимо с Android Marshmallow и поддерживает старые версии Android. Если вы хотите посмотреть, как выглядит приложение, посмотрите this video the author put on YouTube.
Taxi Booking App
Я уже упоминал, что многие традиционные компании переходят на mobile и это касается таксомоторных компаний. Вот почему Uber и Lyft так популярны. Этот шаблон для Android впечатляет. Он содержит многофункциональное приложение для Android, а также мощный backend, полное решение. Приложение имеет интерактивную карту с информацией о транспортном средстве и отслеживанием, распознавание голоса и поддержку push-уведомлений.
Шаблон предлагает решение для клиентов и водителей. Клиенты могут заказать поездку с мобильным приложением, а водители получают уведомление, когда кто-то просит приехать. Даже если вы не планируете создавать приложения для бронирования такси, можете многому научиться, просматривая все аспекты этого шаблона.
Inventory Management App
Составление описи отнимает или время с ручкой и бумагой, или деньги из-за дорогого оборудования и инфраструктуры. Теперь это не так, и шаблон Android показывает, каковы возможности. Добавлять, обновлять и просматривать продукты легко и просто и пользователь уведомляется, если инвентаризация заканчивается.
Шаблон легкий, но удивительно мощный. Продукты хранятся локально в базе данных SQLite и есть поддержка экспорта в электронную таблицу. Вы можете загрузить приложение с веб-сайта автора, если хотите его просмотреть.
Pixel Art
Кто не любит pixel art? Я думаю, любит каждый разработчик. Этот шаблон представляет собой простое приложение для рисования в стиле pixel art. Инструменты просты, но мне очень нравятся результаты, которые с ними можно получить.
Автор включил короткое видео, в котором он создает Luigi, брата Mario. Если вы хотите больше узнать о рисовании на Android, тогда это отличный шаблон для начала.
Envato Market содержит десятки шаблонов мобильных приложений для создания вашего следующего проекта. Эти шаблоны хороши для обучения или изучения того, как коллеги-разработчики реализовали определённую функцию. Они великолепны, если вы ищете вдохновения. Проверяйте Android templates on Envato Market.
Источник
Android IDE Template Format
В процессе создания новых приложений очень часто приходится писать однотипный код и воспроизводить уже проверенные временем структуры классов. IDE (в частности Android Studio) облегчает во многом задачи, связанные с созданием новых компонентов для приложения. Список шаблонных Aсtivity растет с каждой новой версией SDK Tools. Но что если нужно создать свой собственный шаблон? Для одного файла это легко, но что делать, если нужно создать шаблон с созданием нескольких файлов? Зная возможности IDE, это вполне реализуемо, ведь Activity создается вместе с файлом разметки, да и фрагмент к ней добавить можно. Однако описание такой функциональности найдено не было, потому пришлось искать решение для данной возможности самостоятельно.
Под катом хочу рассказать вам о том, как эта возможность реализуется в Android Studio.
Первой мыслью было спросить у коллег, пользующихся продуктами JetBrains, как они решают эту проблему. Ответ был весьма прост. Для создания структуры классов был написан отдельный скрипт, который выполнял все необходимые действия.
Действительно, такое решение было первым, которое приходило на ум. И у него есть свое преимущества, а именно, — независимость от IDE. Однако это неудобно, и вопрос совместимости с IDE оставался актуальным.
В исходниках SDK есть описание способа решить поставленную задачу. Android IDE Template Format.
Получив такой инструмент я сразу решил его опробовать и этим опытом спешу поделиться.
Для создания шаблонов используется FreeMarker. Это очень похоже на использование шаблонов PHP и Django.
Суть заключается в том, что у нас есть определенный шаблон и форма для ввода параметров. После ввода, параметры передаются в шаблон, и на основе этих данных собирается необходимый класс.
Список всех используемых шаблонов находится по следующему адресу
android-studio-folder\plugins\android\lib\templates\
Для создания своего шаблона добавляем в директорию activities(или other) новый католог со следующим списком файлов
Обязательными являются только файлы template.xml и recipe.xml.
template.xml
Этот XML-файл содержит метаданные о шаблоне, в том числе имя, описание, категорию и видимые пользователю параметры, доступные в IDE в качестве опций.
Элемент template
format — версия шаблона, которой этот шаблон придерживается. Должно быть 4. (ну вот так вот)
revision — необязательный параметр. Версия этого шаблона (которую можно увеличить при обновлении шаблона)
name — отображаемое имя шаблона.
description — описание шаблона.
minApi — необязательный параметр. Проверяется минимальный уровень API, для этого шаблона. IDE перед созданием шаблона будет проверять, что minSdkVersion не ниже этого значения.
Элемент parameter
Определяет настраиваемые пользователем параметр шаблона.
id — идентификатор для переменной. Доступен в файле глобальной переменной. Если идентификатор Foo, то значение параметра будет доступно в FreeMarker файлах как $
name — отображаемое имя параметра.
type — тип параметра. Доступные значения string, boolean, enum, и separator.
constraints — необязательный. Ограничения параметра. Ограничения могут быть объединены с помощью |.
- nonempty — значение не должно быть пустым
- apilevel — указывает уровень API
- package — значение должно представлять собой допустимое имя пакета Java
- app_package — значение должно представлять собой допустимое имя Android app package
- module — значение должно представлять собой допустимое имя модуля
- class — значение должно представлять собой допустимое Java класса
- activity — значение должно представлять собой полное имя класса Activity
- layout — значение должно представлять собой допустимое имя layout ресурса
- drawable — значение должно представлять собой допустимое имя drawable ресурса
- string — значение должно представлять собой допустимое имя string ресурса
- id — значение должно представлять собой допустимое имя id
- unique — значение должно быть уникальным
- exists — значение должно существовать
suggest — необязательный. Автоматически обновляемые выражения, зависящие от значения других параметров.
default — необязательный. Значение по умолчанию для этого параметра.
visibility — необязательный. FreeMarker выражение, определяющее, видимость компонента.
help — необязательный. Подсказка для этого параметра.
Элемент option
Для параметров типа enum, представляет собой элементы для выбора.
id — значение параметра устанавливается, если выбрана эта опция.
minApi — необязательный. Требуется минимальный уровень API.
[text] — Текст отображаемый при выборе этого параметра.
Элемент thumb
Показывает миниатюру для шаблона. Елементы должны быть внутри элемента . Текст содержащийся в этом элементе это путь к миниатюре. Если этот элемент имеет атрибуты, они будут рассматриваться как селектор.
Пример:
В качестве миниатюры будет показана template_tabs.png, если в navType выбрано значение tabs.
globals.xml.ftl
XML-файл содержит глобальные переменные для использования в рабочих макетах FreeMarker.
Пример globals.xml.ftl:
recipe.xml.ftl
Этот XML-файл содержит отдельные инструкции, которые должны быть выполнены при генерации кода для этого шаблона.
Например, вы можете скопировать некоторые файлы или каталоги(инструкция copy), возможно создание файлов через FreeMarker (инструкция instantiate), и можно попросить IDE открыть файл (инструкция open).
Примечание: Имя файла инструкций определяется в template.xml. Однако по соглашению, лучше называть его recipe.xml.ftl.
Примечание: Глобальные переменные globals.xml.ftl доступны для использования в recipe.xml.ftl.
Инструкции поддерживают следующие методы:
dependency
Указывает, что шаблону необходима библиотека. Если ее нет, IDE добавит зависимость в проект.
Атрибут mavenUrl
Указание maven пакета библиотеки. Для примера, com.android.support:appcompat-v7:+
copy
Единственный обязательный параметр это путь к исходным файлам для копирования относительно каталога root/. Все необходимые подкаталоги создаются автоматически, при необходимости.
Каталог создания по умолчанию совпадает с расположение шаблона относительно папки /root. Есть необязательный параметр для указания пути создания файла. Обратите внимание, что расширение .ftl автоматически убирается. Для примера запись/> является правильной. Будет создан файл с именем strings.xml, а не strings.xml.ftl.
instantiate
Тоже самое что и copy, но для исходного файла сперва будет запущен FreeMarker.
merge
Эта инструкция будет запускать FreeMarker для исходного файла, а затем объединять содержимое с уже существующим файлом в проекте или создавать новый файл. Наиболее распространенным примером использования этой инструкции является добавление компонентов к файлу AndroidManifest.xml или объединение таких ресурсов, как strings.xml.
open
Открывает файл, указанный в аргументах, после завершения генерации кода.
mkdir
Проверяет существование каталога, указанного в аргументах
Все файлы шаблонов (resources, Java sources, Android Manifest) должны располагаться в директории root/
Однако вместо размещения исходные файлов в src/com/google/… можно просто использовать src/app_package/.
Built-in Template Functions
Существует несколько функций, не входящих в список функций FreeMarker, которые можно использовать.
Вот некоторые из них:
string activityToLayout(string)
Преобразует имя класса Activity в строку, подходящую для использования в качестве имени ресурса. Например, FooActivity будет преобразовано к activity_foo.
string camelCaseToUnderscore(string)
Преобразует camel-case строку в строку с подчеркиванием. Например, FooBar будет преобразовано к foo_bar.
string classToResource(string)
Преобразует Android имя класса, например, FooActivity или FooFragment, к соответствующему ресурсу с добавлением суффикса ‘Activity’ или ‘Fragment’.
На данный момент распознаются:
- Activity
- Fragment
- Provider
- Service
string layoutToActivity(string)
Преобразует ресурс с суффиксом в строку класса. Например activity_foo будет переведено к Java классу FooActivity.
string slashedPackageName(string)
Преобразует полное имя пакета Java к соответствующему пути к каталогу. Например, если данный аргумент com.example.foo, то возвращаемое значение будет com/example/foo.
string underscoreToCamelCase(string)
Преобразует подчеркивания строки к соответствующей camel case строке. Например, foo_bar к FooBar.
Built-in Template Parameters
Некоторые параметры, доступные для FreeMarker выражений и файлов.
packageName
Имя пакета проекта, например, com.example.foo
isNewProject
Логическое значение указывающее является ли шаблон шаблоном нового проекта.
manifestDir
Каталог с AndroidManifest.xml.
srcDir
Каталог исходных файлов Java для проекта.
resDir
Каталог корневой директории ресурсов (res/) для проекта.
За полным списком функций и параметров обращайтесь к документации.
В целом, создание собственного шаблона не является чем-то трудным. Потратив некоторое время на его создание, можно избавиться рутины по созданию компонентов и структур в проекте.
Пользуйтесь и автоматизируйте все, что можно автоматизировать.
Источник