Работа с формами android

Layout

Что такое Layout

При разработке первых приложений мы уже встречали элемент LinearLayout, который позволяет группировать дочерние элементы в одну линию в автоматическом режиме. Существуют и другие типы контейнеров, позволяющие располагать элементы разными способами. Пришло время познакомиться с ними поближе.

Компоновка (также используются термины разметка или макет) хранится в виде XML-файла в папке /res/layout. Это сделано для того, чтобы отделить код от дизайна, как это принято во многих технологиях (HTML и CSS). Кроме основной компоновки для всего экрана, существуют дочерние элементы компоновки для группы элементов. По сути, компоновка – это некий визуальный шаблон для пользовательского интерфейса вашего приложения, который позволяет управлять элементами управления, их свойствами и расположением. В своей практике вам придется познакомиться со всеми способами размещения. Поэтому здесь мы рассмотрим только базовую часть теории, чтобы вы поняли саму сущность разметки. Кроме того, разметку можно создавать программным способом, который будет описан в конце статьи. Если вы будет обращаться к элементам управления через Java-код, то необходимо присваивать элементам уникальный идентификатор через атрибут android:id. Сам идентификатор назначается через выражение @+id/your_value. После этого вы можете обращаться к элементу через код при помощи метода findViewById(R.id.your_value).

Android Studio включает в себя специальный редактор для создания разметки двумя способами. Редактор имеет две вкладки: одна позволяет увидеть, как будут отображаться элементы управления, а вторая – создавать XML-разметку вручную.

Создавая пользовательский интерфейс в XML-файле, вы можете отделить представление приложения от программного кода. Вы можете изменять пользовательский интерфейс в файле разметки без необходимости изменения вашего программного кода. Например, вы можете создавать XML-разметки для различных ориентаций экрана мобильного устройства (portrait, landscape), размеров экрана и языков интерфейса.

Каждый файл разметки должен содержать только один корневой элемент компоновки, который должен быть объектом View или ViewGroup. Внутри корневого элемента вы можете добавлять дополнительные объекты разметки или виджеты как дочерние элементы, чтобы постепенно формировать иерархию элементов, которую определяет создаваемая разметка.

Виды разметок

Существует несколько стандартных типов разметок:

Все описываемые разметки являются подклассами ViewGroup и наследуют свойства, определённые в классе View.

Комбинирование

Компоновка ведёт себя как элемент управления и их можно группировать. Расположение элементов управления может быть вложенным. Например, вы можете использовать RelativeLayout в LinearLayout и так далее. Но будьте осторожны: слишком большая вложенность элементов управления вызывает проблемы с производительностью.

Можно внедрить готовый файл компоновки в существующую разметку при помощи тега :

Подробнее в отдельной статье Include Other Layout

Программный способ создания разметки

Для подключения созданной разметки используется код в методе onCreate():

Естественно, вы можете придумать и свое имя для файла, а также в приложениях с несколькими экранами у вас будет несколько файлов разметки: game.xml, activity_settings.xml, fragment_about.xml и т.д.

В большинстве случаев вы будете использовать XML-способ задания разметки и подключать его способом, указанным выше. Но, иногда бывают ситуации, когда вам понадобится программный способ (или придётся разбираться с чужим кодом). Вам доступны для работы классы android.widget.LinearLayout, LinearLayout.LayoutParams, а также Android.view.ViewGroup.LayoutParams, ViewGroup.MarginLayoutParams. Вместо стандартного подключения ресурса разметки через метод setContentView(), вы строите содержимое разметки в Java, а затем уже в самом конце передаёте методу setContentView() родительский объект макета:

Число макетов постоянно меняется. Например, недавно появились новые виды CoordinatorLayout и ConstraintLayout. Кроме стандартных элементов разметки существуют и сторонние разработки.

Источник

Работа с формами android

Во многих приложениях можно увидеть форму обратной связи для отправки сообщений автору приложения, хотя, конечно, это чаще происходит через комментарии в Google Play. Но тем не менее, такая форма обратной связи тоже может быть полезна и сегодня мы научимся ее создавать. В процессе создания формы мы вспомним (или научимся) как работать с такими элементами, как EditText, Spinner, Checkbox, Button. Итак, мы создадим приложение, которое будет изображать окно отправки письма с отзывами о программе или своими предложениями к создателю приложения на его электронную почту. Стоит сразу отметить, что отправлять сообщения программа не будет, мы просто научимся делать подобную форму и поработаем с указанными выше элементами, а вот процесс реальной отправки сообщения мы рассмотрим позже в другом уроке.

Читайте также:  Скопировать контакты нокия андроид

Создаем новое приложение, как обычно названия можно оставить по умолчанию, а можете ввести что то свое. Выбираем activity Blank Activity.

Сначала немного разберемся в том, какую именно информацию мы хотим получать от пользователей. Мы добавим поля для ввода пользователем своего имени, электронной почты, типа ответа, например, похвала, жалоба, предложение или отчет об ошибке, текст самого сообщения и функцию обратного ответа пользователю о благополучной доставке сообщения. Работы не мало, но и не слишком много.

Начнем с создания интерфейса приложения. Поместим все будущие элементы программы в теге ScrollView, таким образом мы будем уверенны в том, что приложение будет нормально отображать все элементы на разных размерах экрана. В файле activity_main.xml добавим следующий код:

Теперь начнем добавлять сюда необходимые элементы. Добавим элемент TextView, в котором будет отображаться текст с названием окна и предложением пользователю отправить свое сообщение. Текст в этом элементе нужно бы задать через строковые ресурсы @string, но мы просто введем название поля вручную:

Теперь нужно создать элемент EditText, в котором пользователь сможет ввести свое имя. Назовем этот элемент EditTextName. Будем использовать подсказку, команду hint, чтобы было понятно, что нужно вводить в этом поле. Опять же, я пошел путем страданий и ввода всего текста вручную, что не очень грамотно, вы можете усовершенствовать это и создать в файле strings.xml все необходимые строки. Итак, добавляем EditText:

Добавим еще один элемент EditText, в нем пользователь должен будет ввести свой электронный адрес. Назовем поле EditTextEmail, также как и в предыдущем элементе, добавим подсказку hint о том, что нужно вводить в этом поле:

Далее мы создаем элемент под названием Spinner, который позволит выбрать тип отправляемого сообщения, что это будет: похвала, жалоба, предложение или же отчет об ошибке. Назовем этот Spinner элемент SpinnerFeedbackType. Для начала нам нужно пройти в файл strings.xml и добавить туда строки, которые будут отвечать за пункты выбора в Spinner. Открываем файл strings.xml и добавляем туда следующее:

Теперь нам нужно создать строковый массив. В папке res/values создаем новый файл по имени arrays.xml и добавим туда следующее:

После проделанных выше шагов мы наконец то готовы создать наш Spinner:

Прямо под созданным элементом Spinner нужно создать еще одно поле EditText в которое пользователь будет вводить текст своего сообщения. Назовем этот элемент EditTextFeedbackBody, также настроим подсказку hint о типе текста, который нужно вводить. Чтобы дать пользователю больше пространства и свободы при вводе текста ответа, настроем команду inputType на textMultiLine и настроим количество линий на 5:

Далее мы должны добавить нашему приложению элемент CheckBox, в нем пользователю будет предложено выбрать, хочет ли он получить отчет о том, что его сообщение успешно дошло по адресу или же нет:

Ну и под конец работы с интерфейсом программы в файле activity_main.xml, добавим кнопку отправки сообщения Button. Настроим для нашей кнопочки текст с помощью атрибута text и зададим ей нажатие:

Работа с layout файлом нашей программы фактически готова. На данный момент окно программы должно выглядеть следующим образом:

Читайте также:  Android 4 htc a3333 wildfire

Теперь переходим к работе к файлу java класса нашего приложения. По умолчания он имеет имя MainActivity.java. Первым делом добавим метод обработки нажатия на кнопку (как это сделать вы можете увидеть в уроке о Button):

Нам нужно организовать чтение программой введенных пользователем данных во все элементы EditText. Для этого

Таким же образом инициализируем и обработаем объекты Spinner и CheckBox:

После этого мы можем компилировать и запустить наше приложение. Вы увидите созданную нами почтовую форму:

Источник

Диалоговые окна в Android. Часть 1

Dialog

Dialog — это класс, принадлежащий Android SDK и помогающий нам, простым смертным программистам, работать с диалоговыми окнами в Android. Класс Dialog имеет 4 подкласса:

  • AlertDialog: это диалоговое окно для различных сообщений приложения, например «Вы хотите купить мое приложение?» или что то в этом роде. AlertDialog поддерживает три кнопки — утвердительную (OK), отрицательную (Cancel) и нейтральную (Later).
  • ProgressDialog: это диалоговое окно для отображения выполнения различных процессов, загрузки, например.
  • DatePickerDialog: диалоговое окно предлагает пользователю выбрать дату.
  • TimePickerDialog: диалоговое окно предлагает пользователю выбрать время

На первом из этого списка, AlertDialog мы и остановимся подробнее.

AlertDialog

Чтобы создать диалоговое окно AlertDialog нам в помощь потребуется экземпляр класса Builder:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
Теперь, когда у нас есть builder, мы можем «строить» свое собственное диалоговое окно. В параметры диалогового окна Вы можете написать множество различных параметров, но основными являются эти:

  • setTitle(int resID) — задает заголовок диалогового окна, принимает в качестве аргументов ссылку на ресурс или строку.
  • setMessage(int resID) — задает сообщение в диалоговом окне, также принимает ссылку на ресурс или строку.
  • setPositiveButton(int textID, DialogInterface.OnClickListener listener) — устанавливает на Вашем диалоговом окне утвердительную кнопку с текстом ресурса textID и слушателем listener. Методы setNegativeButton и setNeutralButton идентичны, с разницей в назначении кнопок.

Пример создания AlertDialog:

В этом примере я использовал setCancelable(true) — это разрешает пользователю закрывать диалоговое окно с помощью хардварной кнопки Back. Еще я создал слушателя для утвердительной кнопки и использовал метод create(). Метод create() возвращает готовое диалоговое окно с вашими параметрами как экземпляр класса AlertDialog.
Вот мы и создали диалоговое окно! Следующая задача — показать его пользователю. Вот тут есть несколько вариантов:

  • showDialog(AlertDialog dialog) — самый простой способ показать диалоговое окно, но начиная с версии 3.0 разработчики Android не рекомендуют пользоваться этим методом, и в результате вы получите предупреждение, которое можно обойти только @SurpressWarning, что есть не совсем хорошо.
  • AlertDialog dialog.show() — альтернативный способ показать окно, для этого в экземпляре dialog должен лежать результат метода Builder.create().

Второй метод нам подходит больше, но писать в основной активности кучу различных Buider и AlertDialog портит читабельность кода. Поэтому целесообразней вынести создание и обработку диалоговых окон в новый класс, например:

Единственная заметка по поводу этого кода будет про использования метода setView(View view) в диалоге IDD_SETTINGS. У AlertDialog как и у всех остальных диалоговых окон есть одна приятная особенность — им можно задавать собственные Layout, что позволяет полностью видоизменять диалоговые окна и их содержимое. Здесь есть один подводный камень: обработку элементов этого Layout вы должны будете производить именно в той Activity, где вызываете это диалоговое окно. Например я показываю диалоговое окно IDD_SETTINGS в MainActivity с Layout по имени settings:

Соответственно я загружаю это окно в MainActivity:

Метод initSettings класса MainActivity в данном случае будет выглядеть так:

Ну а дальше обрабатываете свои объекты как вам угодно.

Небольшой итог

1) Для большинства целей диалоговых окон подходит AlertDialog
2) AlertDialog может принимать вид layout с любыми объектами
3) Гораздо лучше использовать для диалоговых окон отдельный класс и пользоваться AlertDialog.show()
4) Обработка объектов кастомного layout производится в активности, вызвавшей диалог

Читайте также:  Armv7 neon для андроид

В следующей части этой статьи пойдет речь о DialogFragment, который был включен в Android SDK начиная с 3.0 Honeycomb. Надеюсь эта статья поможет новичкам и не очень в своих квестах по завоеванию Google Play.

Источник

Создаем приложение для ANDROID быстро и просто

Сегодня я хотел бы поделиться с Вами, как быстро и просто можно создать приложение для Android с базовыми знаниями HTML CSS и JS. По данному примеру код на Java для Android будет минимальным. Благодаря платформе XAMARIN приложения для мобильных телефонов можно делать в Visual Studio.

▍Шаг 1 — Переходим на сайт и Скачиваем бесплатную версию Community.

▍Шаг 2 — Запускаем установку и выбираем параметры. Нас интересует XAMARIN. Но Вы также можете выбрать другие параметры.

После успешной установки мы можем создать свой первый проект.

▍Шаг 3 — Запускаем Visual Studio. Создать проект. В фильтре пишем xamarin, платформа Android, язык c# (Если желаете другой язык можете его выбрать)

▍Шаг 4 — Далее. Указываете имя для своего приложения, выбираете каталог где его сохранить. Создать.

▍Шаг 5 — Указываем пустое приложение и выбираем минимальную версию андроида для запуска этого приложения.

▍Шаг 6 — Жмем ок. Visual Studio автоматически создает код для приложения

Мы можем его запустить в эмуляторе, который идет комплекте с Visual Studio нажав клавишу F5.

▍Шаг 7 — Теперь немного модифицируем код. В данном случае мы вообще не будем использовать Java. Так как мы будем кодить на C#.

Приводим код к такому виду. Здесь мы создаем WebView контейнер который будет грузить локальный HTML файл, который находится в проекте в папке Assets.

▍Шаг 8 — Создадим там папку Content.

▍Шаг 9 — Добавим в папку Content файл login.html

▍Шаг 10 — Далее уже пишем на привычном нам HTML CSS JS. Можем нажать на F5 и увидеть результат нашей работы.

По такому принципу можно создать приложение быстро и просто. Файлы html будут выглядеть одинаково на всех устройствах. То есть, Вы можете сделать приложения для Android и iOS с одинаковым интерфейсом. Не надо изучать сложные языки разметки, не надо изучать сложные макеты (сториборды) на iOS. Все можно сделать на HTML.

В идеале, вместо локальных файлов можно сделать загрузку со стороннего сайта. В этом случае Вы можете менять контент приложения без его обновления в AppStore и Google Play.

Q: Но как быть с функциями самой платформы? Пуш сообщения? Как взаимодействовать с самой платформой?

Все очень просто! JavaScript можно использовать для вызова функций Android:

▍Шаг 1 — Немного модифицируем наш файл MainActivity

▍Шаг 2 — Далее создаем класс JavaScriptInterface на который будет ругаться Visual Studio

Мы видим, что теперь программа ругается на Export так как не знает что это такое.

▍Шаг 3 — Добавим нужную библиотеку

▍Шаг 4 — В фильтре напишем mono

▍Шаг 5 — Найдем Export и поставим галочку

▍Шаг 6 — Жмем ок и видим что ошибка пропала.

Так вы можете подключать библиотеки если вдруг Visual Studio ругается на что то.

Данная функция это показ всплывающей информации на экране. Она выполняется именно на платформе Андроида. То есть мы можем написать в HTML файле вызов функции Андроида. Получается полное дружелюбие двух платформ по JavaScript интерфейсу. Данные можно передавать туда сюда. Вызывать переход от одной активити в другую. Все через HTML + JavaScript.

Немного модифицируем файл login.htm:

Теперь при нажатии на кнопку HTML вызывается функция Toast андроида и выводиться сообщение пользователю.

Источник

Оцените статью