Первая страница
Наша команда
Контакты
О нас

    Головна сторінка



Методичні вказівки до лабораторних робіт з дисципліни: " Програмування мобільних пристроїв " для студентів напряму підготовки

Методичні вказівки до лабораторних робіт з дисципліни: " Програмування мобільних пристроїв " для студентів напряму підготовки




Сторінка2/5
Дата конвертації10.03.2017
Розмір0.65 Mb.
ТипМетодичні вказівки
1   2   3   4   5

Мета лабораторної роботи :

Розробка простого застосування, що допомагає зрозуміти структуру додатка, освоїти основні оператори, звикнути до середовища розробки.



Завдання лабораторної роботи :

- створити нове застосування і вивчити його структуру;

- настроїти інтерфейс додатка;

- реалізувати логіку додатка.


2.1 Вступ

Для досягнення поставленої мети в лабораторній роботі створимо додаток в середовищі розробки Android IDE (Eclipse і ADT), детально розглянемо структуру отриманого проекту і розберемо призначення основних його елементів.

Розумі́ння - психологічний стан, який виражає собою правильність ухваленого рішення і супроводжуваний відчуттям упевненості в точності сприйняття або інтерпретації якої-небудь події, явища, факту.
Елеме́нт (лат. elementum - стихія, первинна речовина) - нерозкладний (у даній системі) компонент складних тіл, матеріальних систем, теоретичних побудов; будь-який об'єкт, пов'язаний певними відношеннями з іншими об'єктами в єдиний комплекс.

Щоб подальші дії набули деякого сенсу, сформулюємо завдання, яке вирішуватиме наше застосування, назвемо його "Вгадай число". Суть додатка в тому, що програма випадковим чином "загадує" число від 0 до 100, а користувач повинен вгадати це число. При кожному введенні числа, програма повідомляє користувачеві результат: введене число більше за загадане, менше або ж "Ура, перемога"!

Програма (фр. programme письмове оголошення, порядок денний, від грец. prógramma вказівка) - заздалегідь затверджена (визначена) дія.
Результат, пі́дсумок, (заст. ску́ток, вислід) - кінцевий наслідок послідовності дій. Можливі результати містять перевагу, незручність, вигоду, збитки, цінність і перемогу. Результат є етапом діяльності, коли визначено наявність переходу якості в кількість і кількості в якість.
число вгадане.

Застосування, що розробляється, виконує свої функції тільки коли воно видимо на екрані, коли воно не видиме його робота призупиняється, т. ч. маємо справу з додатком переднього плану. Для виконання усієї роботи досить визначити одну активність в додатку, фонові процеси не передбачені.

Далі в роботі розглянемо прості елементи інтерфейсу користувача і додамо їх в додаток, а також розглянемо питання, пов'язані безпосередньо з програмуванням: навчимося обробляти події, що виникають при взаємодії додатка з користувачем;

Інтерфе́йс користувача́ (англ. user interface, UI, дружній інтерфейс) - засіб зручної взаємодії користувача з інформаційною системою. Сукупність засобів для обробки та відображення інформації, максимально пристосованих для зручності користувача; у графічних системах інтерфейс користувача реалізовується багатовіконним режимом, змінами кольору, розміру, видимості (прозорість, напівпрозорість, невидимість) вікон, їхнім розташуванням, сортуванням елементів вікон, гнучкими налаштовуваннями як самих вікон, так і окремих їхніх елементів (файли, папки, ярлики, шрифти тощо), доступністю багатокористувацьких налаштувань.
реалізуємо логіку перевірки числа на збіг із загаданим.
2.2 Створення додатка і вивчення його структури

Створіть новий проект в середовищі Android IDE (Eclipse з ADT). Процес створення нового проекту і опис основних налаштувань детально розглянутий в лабораторній роботі до першої лекції.

В процесі створення проекту, ми назвали його ProjectN, середовище розробки готує необхідні теки і файли. Повний ієрархічний список обов'язкових елементів проекту можна побачити на вкладці Package Explorer (аналогічну інформацію надає вкладка Project Explorer), ієрархія отриманих тек і файлів для нашого проекту зображена на рисунку 2.1.

Ієра́рхія (грец. ίεράρχίά, від ίερσς - священний, та άρχή - влада) - поділ на вищі й нижчі посади, чини; суворий порядок підлеглості нижчих щодо посади або чину осіб вищим. В ієрархії між її членами діють вертикальні зв'язки - відносини субординації.


структура проекта projectn

Рисунок 2.1 - Структура проекту ProjectN


Нині нас цікавитиме призначення декількох файлів і тек.

Розглянемо теки:

- тека src - містить файли з початковим кодом на мові Java. Саме у цій теці розміщуються усі класи, що створюються в процесі розробки додатка. Зараз в цій теці в пакеті com.example.projectn розміщується єдиний клас FullscreenActivity.java. Цей клас визначає головну і єдину активність в цьому додатку.

Коментар 1: Ім'я пакету привласнюється в процесі створення додатка в полі Package Name, використовувати com.example не рекомендується, так як. пакет з таким ім'ям не можна завантажити в Google Play. Часто рекомендують в якості імені пакету назву сайту програміста, записану в зворотному порядку, можна просто використати свої ім'я і прізвище. Останнє слово в імені пакету формується автоматично і співпадає з ім'ям проекту.

Коментар 2: Ім'я файлу привласнюється в процесі створення додатка на етапі налаштування активності. Ім'я визначається в полі Activity Name.

Коментар 3: Package Explorer відображає структуру тек, яка створюється в каталозі, вибраному в якості робітника (Workspace) при запуску Eclipse.

Робітники́, також працівники́, трудівники́ - наймані особи, зайняті в безпосередньому виробництві, рідше у сфері послуг; виконавці найнижчої ланки технологічного чи управлінського ланцюга. В правовому суспільстві права й інтереси робітників захищено трудовим правом[Джерело?].
Наприклад, робочий каталог називається workspaceADT, в ньому для нашого проекту з'явилася тека з ім'ям ProjectN, в ній є тека src, в ній com, в ній example, в ній projectn (зверніть увагу, що назва пакету розпалася на три теки, кожне слово, відокремлене точкою визначило нову теку). І вже в теці projectn знаходиться файл MainActivity.java і розміщуватимуться інші java-файли проекту.

- тека gen - містить java-файли, які не вимагається змінювати і краще взагалі не чіпати. Ці файли генеруються автоматично. Нас може зацікавити файл R.java він містить ідентифікатори (ID) для усіх ресурсів додатка.

- тека res - містить структуру тек ресурсів додатка, розглянемо деякі з них:


  • layout - в цій теці містяться xml-файли, які описують зовнішній вигляд форм і їх елементів, поки там знаходиться тільки activity _ main.xml;

  • values - містить XML файли, які визначають прості значення, таких ресурсів як, рядки, числа, кольори, теми, стилі, які можна використати в цьому проекті;

  • menu - містить XML файли, які визначають усе меню додатка.

Розглянемо файл AndroidManifest.xml - файл у форматі xml, який описує основні властивості проекту, дозвіл на використання ресурсів додатку та ін. Відразу після створення додатка файл AndroidManifest.xml виглядає так, як показано на рисунку 2.2.

файл androidmanifest.xml только созданного проекта

Рисунок 2.2 - Файл AndroidManifest.xml тільки створеного проекту


Розглянемо детально файл маніфесту.

Перший обов'язковий елемент є кореневим елементом файлу, повинен містити обов'язковий елемент і усі інші елементи з потреби. Розглянемо основні атрибути цього елементу :



xmlns: android

визначає простір імен Android, завжди повинен мати значення: "http://schemas.android.com/apk/res/android". Обов'язковий атрибут.

package

повне ім'я пакету, в якому розташовується додаток.
Атрибу́т (attribute) - невід'ємна, необхідна для забезпечення цілісності об'єкта (предмета) або суб'єкта (людини) властивість, його частина, додаток.
Обов'язковий атрибут. Ім'я має бути унікальним, може містити заголовні і рядкові латинські букви, числа і символ підкреслення. Проте починатися повинно тільки з букви. Для уникнення конфліктів з іншими розробниками рекомендується використати ім'я вашого сайту (якщо він є) записане в зворотному порядку. У нашому випадку пакет має ім'я "com.example.projectn" і наше застосування не вдасться розмістити в Google Play (але ми на це і не претендуємо).

Увага: якщо Ви опублікували своє застосування, Ви не можете міняти ім'я пакету, оскільки ім'я пакету служить унікальним ідентифікатором для додатка і у разі його зміни додаток розглядатиметься, як зовсім інше і користувачі попередньої версії не зможуть його оновити.

Ідентифіка́тор (identifier) - 1. Ознака, яка служить для ідентифікації особи чи предмета, що розпізнається. // Захисна ознака для встановлення справжності банкноти чи цінного папера.



android: versionCode

внутрішній номер версії додатка не видно користувачеві. Цей номер використовується тільки для визначення чи є одна версія сучаснішою в порівнянні з іншою, більший номер показує пізнішу версію.

android: versionNumber

номер версії, є рядком і використовується тільки для того, щоб показати користувачеві номер версії додатка.

android: shareUserID, android: sharedUserLabel, android: installLocation

ці атрибути в нашому файлі маніфесту не представлені, про їх призначення можна почитати по посиланню: http://developer.android.com/guide/topics/manifest/manifest-element.html.

Розглянемо елемент , який показує сумісність додатка з версіями Android. Основні атрибути:



android: minSdkVersion

вказує значення мінімального рівня API, необхідного для роботи додатка. Система Android не дозволить встановити додаток, якщо рівень API нижчий, ніж рівень, вказаний в цьому атрибуті. Увага: якщо цей атрибут не вказаний, система встановить значення за умовчанням рівним "1", яке означає, що додаток сумісний з усіма версіями Android.

І у разі, якщо додаток не сумісний з усіма версіями, установка пройде на будь-яку версію Android, а під час роботи додаток зламається, коли спробує звернутися до недоступних елементів API. Тому необхідно завжди вказувати значення цього атрибуту.



android: targetSdkVersion

вказує рівень API цільової платформи Android додатка, якщо цей атрибут пропущений, за умовчанням набуває значення android : minSdkVersion.

android: maxSdkVersion

вказує максимальне значення рівня API, під який розроблявся додаток. Якщо значення цього атрибуту нижче, ніж рівень API відповідає версії Android, на яку встановлюється додаток, то система не дозволить встановити такий додаток.

Якщо уважно подивитися на файл маніфесту на рисунку 2.2, можна помітити, що цей атрибут в ньому відсутній. Насправді розробникам не рекомендуються задавати значення цього атрибуту. По-перше, це значення перешкоджатиме використанню додатків на нових версіях Android при їх появі, попри те, що усі нові версії повністю сумісні. По-друге, варто зважати на те, що завдання цього атрибуту може привести до того, що додаток буде видалений з пристрою після оновлення Android до більш високого рівня API.

Детальніше з елементом і його атрибутами можна ознайомитися за посиланням:

http://developer.

Посилання (англ. reference), також поклик - посилання у паперових і електронних документах - уривок, витяг з якого-небудь твору, на який посилаються у викладі, з точною назвою джерела й вказівкою на відповідну сторінку.
android.com/guide/topics/manifest/uses - sdk - element.html.

Розглянемо елемент , який є обов'язковим елементом маніфесту, повністю визначає склад додатка. Є контейнером для елементів , , ,
(і не лише), кожен з яких визначає відповідний компонент додатка. Містить набір атрибутів, дія яких поширюється на усі компоненти додатка. Розглянемо атрибути елементу , представлені в маніфесті на рисунку 2.2:

android: allowBackup

визначає дозвіл для додатка брати участь в резервному копіюванні і відновленні. Якщо значення цього атрибуту false, то для додатка ніколи не може бути створена резервна копія, навіть якщо проводиться резервне копіювання усієї системи цілком. За умовчанням значення цього атрибуту рівне true.

android: icon

визначає іконку для додатка цілком, а також іконку за умовчанням для компонентів додатка, яка може бути перевизначена атрибутом android : icon кожного компонента. Задається як посилання на графічний ресурс, що містить зображення, в нашому випадку значення цього атрибуту рівне "@drawable/ic _ launcher".

android: label

визначає видимий для користувача заголовок додатка цілком, а також заголовок за умовчанням для компонентів додатка, який може бути перевизначений атрибутом android: label кожного компонента. Задається як посилання на строковий ресурс, в нашому випадку значення атрибуту рівне "@string/app _ name".

android: theme

визначає тему за умовчанням для усіх активностей застосування, може бути перевизначений атрибутом android : theme кожної активності. Задається як посилання на ресурс стилю, в нашому випадку значення атрибуту рівне "@style/AppTheme".

Насправді у елементу значно більше атрибутів, чим нам вдалося розглянути, знайти повний список атрибутів з описами можна по посиланню:

http://developer.android.com/guide/topics/manifest/application - element.html.

У додатку всього одна активність, інших компонентів немає, у зв'язку з цим елемент у маніфесті містить рівно один елемент і більше ніяких інших елементів не містить. Розглянемо елемент , який визначає активність. Для кожної активності обов'язково потрібний свій елемент у маніфесті. Розглянемо атрибути елементу , представлені в маніфесті на рисунку 2.3:

android: name

визначає ім'я класу, який задає активність. Значення атрибуту повинне повністю визначати ім'я класу з вказівкою пакету, в якому розташовується клас. У нашому випадку атрибут має значення: "com.example.projectn.MainActivity". Можна використати скорочений запис ".MainActivity", в цьому випадку додається ім'я пакету, визначене відповідним атрибутом елементу .

android: configChanges

перераховує зміни конфігурації, якими може управляти активність. Якщо конфігурація міняється під час роботи, то за умовчанням активність зупиняється і перезапускається. Якщо ж зміна конфігурації вказана в цьому атрибуті, то при появі цієї зміни активність не перезапускається, замість цього вона продовжує працювати і викликає метод onConfigurationChanged (). У нашому випадку атрибут має значення "orientation|keyboardHidden|screenSize", т. ч. при зміні орієнтації екрану, зміні розміру екрану і зміні доступності клавіатури не відбудеться перезапуск активності.

android: label

визначає видимий користувачеві заголовок активності, якщо він відрізняється від загального заголовка додатка. Задається як посилання на строковий ресурс, в нашому випадку значення атрибуту рівне "@string/app _ name" (тобто можна було і не задавати).

android: theme

визначає тему активності, якщо вона відрізняється від загальної теми додатка, заданої відповідним атрибутом елементу . Задається як посилання на ресурс стилю, в нашому випадку значення атрибуту рівне "@style/FullscreenTheme".

Насправді у елементу значно більше атрибутів, чим нам вдалося розглянути, знайти повний список атрибутів з описами можна по посиланню:

http://developer.android.com/guide/topics/manifest/application - element.html.

У маніфесті для нашого застосування елемент містить рівно один елемент: , що визначає типи намірів, які може приймати активність. Цей елемент містить два елементи: і .

Перший елемент визначає дії, які проходять у фільтр намірів, при цьому повинен містити хоч би один елемент , інакше жоден об'єкт-намір не зможе пройти через фільтр і активність не можливо буде запустити. Елемент має єдиний атрибут android : name="android.intent.action.MAIN".

Другий елемент визначає ім'я категорії у фільтрі намірів. Має єдиний атрибут android : name="android.intent.category.LAUNCHER".

На цьому розбір маніфесту додатка закінчимо, детально з описом усіх елементів цього файлу можна познайомитися за посиланням:

http://developer.android.com/guide/topics/manifest/manifest - intro.html.

Найчастіше, при створенні додатка доводиться мати справу з теками src, res/layout і res/values, оскільки там знаходяться основні файли проекту.
2.3 Налаштування інтерфейсу додатка

До того, як почнемо формувати інтерфейс, трреба підготувати можливість перевірки додатку, що розробляється, на помилки. Щоб не завантажувати кожного разу додаток на реальний пристрій, в Android SDK передбачена можливість використання віртуального пристрою (AVD або Android virtual device), що емулює роботу реального смартфону. Процес створення віртуального пристрою або емулятора детально розписаний в "Установка і налаштування середовища програмування ADT Bundle" .

Прийшов час замислитися про зовнішній вигляд додатка. Спершу необхідно визначити які елементи графічного інтерфейсу нам потрібні, як ці елементи розташовуватимуться на формі і яким чином буде реалізовано взаємодію з користувачем.

Оскільки додаток дуже простий, то і інтерфейс особливою складністю відрізнятися не буде. Нам знадобиться поле для введення чисел (TextEdit), текстова мітка для виведення інформації (TextView) і кнопка для підтвердження введеного числа (Button). Розташовувати елементи інтерфейсу будемо один під одним, згори інформаційна частина, нижче поле введення, кнопку розмістимо в самому низу додатка.

Взаємодія додатка з користувачем організовується дуже просто: користувач вводить число в поле для введення і натискає кнопку, читає результат в інформаційному полі і, або радіє перемозі, або вводить нове число.

Якщо користувач вводить правильне число, то додаток пропонує йому зіграти знову при цьому кнопка гратиме роль підтвердження, а в інформаційне поле буде виведено запрошення до повторної гри.

Запрóшення - коротке повідомлення про якусь подію і запрошення взяти в ній участь. Суто ділові (на конференцію, форум, з'їзд, нараду, презентацію, виставку тощо) пишуться на фірмових бланках, а до культурно-мистецьких заходів часто виготовляють спеціально художньо оформлені запрошення.

Схемний інтерфейс додатка зображений на рисунку 2.3.

схема интерфейса приложения

Рисунок 2.3 - Схема інтерфейсу додатка "Вгадай число"


Нам необхідно додати на форму три елементи: інформаційне поле (TextView), поле введення (TextEdit) і кнопку (Button).

Android IDE підтримує два способи для виконання дій з формування інтерфейсу додатка: перший оснований на XML- розмітці, другій відноситься до візуального програмування і дозволяє перетягувати об'єкти інтерфейсу і розміщувати їх на формі за допомогою миші.

Візуалізація - унаочнення, створення умов для візуального спостереження.
Вважається, що візуальний спосіб підходить для новачків, а більше просунуті розробники можуть писати код вручну, проте найчастіше використовується комбінований підхід.

Для формування інтерфейсу працюватимемо з файлом res/layout/activity main.xml. На рисунку 2.4 можна побачити редактор, що відповідає візуальному способу формування інтерфейсу, цьому режиму відповідає вкладка Graphical Layout.

графическое изображение активности приложения

Рисунок 2.4 - Графічне зображення активності додатка


На рисунку 2.4 поряд з вкладкою Graphical Layout розташована вкладка activity _ fullscreen.xml. Вона відповідає режиму редагування інтерфейсу шляхом формування XML файлу. На рисунку 2.5 можна побачити редактор XML файлу.

описание активности в xml формате

Рисунок 2.5 - Опис активності в XML форматі


Задамо табличне розташування компонентів на формі, для цього виберемо вкладку Layouts, знайдемо там TableLayout і додамо його на форму. На рисунку 2.6 можна побачити результат цих дій.

настройка интерфейса, добавление tablelayout

Рисунок 2.6 - Налаштування інтерфейсу, додавання TableLayout


Тепер почнемо додавати елементи інтерфейсу, використовуватимемо графічний режим правки.

По-перше, нам необхідно додати інформаційне поле. Для цього на панелі =Palette= вибираємо вкладку Form Widgets, на цій вкладці знайдемо поле TextView, перенесемо у вікно додатка, розмістимо в першому рядку таблиці (TableLayout).

По-друге, нам знадобиться поле введення інформації, на вкладці Text Fields знайдемо текстове поле Number і розмістимо в другому рядку таблиці.

По-третє, повернемося на вкладку Form Widgets, виберемо там елемент Button і додамо в третій рядок таблиці. Не потрібний четвертий рядок таблиці видалимо, отримаємо наступний вид додатка, див. рисунку 2.7.



настройка интерфейса, добавление tablelayout

Рисунок 2.7 - Інтерфейс додатка


Після налаштування інтерфейсу можна заглянути у файл activity _ main.xml, в цьому файлі прописано, що використовується TableLayout і даний опис кожної з трьох рядків. На рисунку 2.8 можна побачити, як виглядає такий опис на прикладі першого рядка таблиці.

фрагмент файла activity_fullscreen.xml, описание строки в tablelayout

Рисунку 2.8. Фрагмент файлу activity _ fullscreen.xml, опис рядка в TableLayout


Тепер необхідно наповнити наші елементи інтерфейсу сенсом, нам знадобиться текст для спілкування з користувачем, при програмуванні під Android існує практика розділяти ресурси і код додатка. Для зберігання будь-яких рядків, які можуть знадобитися додатку, використовується файл strings.
Практика (грец. πράξις «діяльність») - доцільна і цілеспрямована діяльність, яку суб'єкт здійснює для досягнення певної мети. Практика має суспільно-історичний характер і залежить від рівня розвитку суспільства, його структури.
Зберіга́ння - дія за значенням зберігати; технологічний процес.
xml. Зберігання усіх строкових ресурсів в цьому файлі серйозно поліпшує локалізацію додатка на інші мови. Цей файл можна знайти в Package Explorer в теці res/values. Відкриємо його і подивимося, що там є, див. на рисунку 2.9.

Рисунок 2.9 - Файл string.xml


Приберемо зайві рядки і додамо нові, результат можна подивитися на рисунку 2.10.

отредактированный файл string.xml

Рисунок 2.10 - Відредагований файл string.xml


Дані змінні виконуватимуть наступні завдання:

- app _ name встановить "видиму" назву додатка;

- behind, ahead, hit оповістять користувача про його успіхи в грі;

- play _ more і try _ to _ guess встановить назву кнопки, яка пояснить її функції;

- input _ value запросить користувача до введення числа;

- error повідомить про невірне введення.

Після зміни strings.xml, при переході на іншу вкладку, не забудьте зберегти зміни (найшвидший спосіб - натиснути Ctrl S).

Настроїмо текст в інформаційному полі. Для цього на вкладці Properties в правій частині вікна виберемо елемент textView1 (це і є наше інформаційне поле, має сенс придумати йому більше осмислене ім'я). Знайдемо властивість Text, підставимо в нього значення рядка з ім'ям try _ to _ guess, див. рисунок 2.11.

Аналогічно можна настроїти текст, яким нас вітатиме кнопка, тільки в цьому випадку потрібно працювати з елементом button1.

настройка текста для кнопки button1

Рисунок 2.11 - Налаштування тексту для кнопки button1


Прийшов час згадати про віртуальний пристрій, якщо він працює, вже можна запустити проект і подивитися, як додаток виглядатиме на екрані пристрою, а виглядати він може як показано на рисунку 2.12.

запуск приложения на виртуальном устройстве

Рисунок 2.12 - Запуск додатка на віртуальному пристрої


Додаток виглядає досить просто, але ми на багато що і не розраховували. Головне, що нас цікавить, ця наявність усіх елементів на екрані, вірний текст в кожному елементі, де він передбачений і можливість вводити числа в поле введення. На рисунку 2.12 видно, що усі вимоги виконані. Додаток є, його можна запустити на віртуальному або реальному пристрої, але він нічого не робить. Наступним кроком буде реалізація логіки додатка, тобто обробка події натиснення на кнопку, як було прописано в завданні.
2.4 Реалізація логіки додатка

Приступимо безпосередньо до програмування, працювати будемо з файлом src/com.example.projectn/MainActivity.java. Знайдемо цей файл в Package Explorer див. рисунок 2.13, відкриємо і почнемо редагувати.



файл mainactivity.java в package explorer

Рисунок 2.13 - Файл MainActivity.java в Package Explorer


Поки файл виглядає таким чином, див. рисунок 2.14.

файл mainactivity.java после создания приложения

Рисунок 2.14 - Файл MainActivity.java після створення додатка


Можна помітити, що клас MainActivity є спадкоємцем класу Activity і в нім вже реалізований метод onCreate (), який запускається при первинному створенні активності, нам потрібно буде його доповнити, але про це трохи пізніше.

Ми пропонуемо програмно міняти інформацію в полі TextView, отримувати значення з поля EditText і обробляти події натиснення на кнопку Button, тому необхідно оголосити відповідні змінні, як поля класу MainActivity:

TextView tvInfo;

EditText etInput;

Button bControl;

Щоб не було помилок, необхідно імпортувати пакет android.

Імпорт - ввезення товарів, послуг (іноді може вживатися щодо капіталу, знань, технологій)
widget, який містить усі елементи графічного інтерфейсу :

import android.widget.*;

Насправді середовище розробки підкаже, що робити.

Тепер необхідно зв'язати ці змінні з елементами інтерфейсу, вже доданими нами в activity _ main.xml, зробити це необхідно в методі onCreate (), а для отримання вже створеного елементу інтерфейсу скористаємося методом findViewById (). Отже в метод onCreate () додамо наступні рядки:

tvInfo = (TextView) findViewById (R.id.textView1);

etInput = (EditText) findViewById (R.id.editText1);

bControl = (Button) findViewById (R.id.button1);

Метод findViewById () повертає об'єкт класу View, який є загальним предком для усіх компонентів призначеного для користувача інтерфейсу, для того, щоб уникнути можливих помилок в дужках перед викликом методу вказуємо до якого конкретно компонента необхідно звузити можливості об'єкту View.

Прийшов час виконати обробку натиснення на кнопку. Повернемося до файлу activity _ main.xml в графічний режим редагування, виберемо елемент Button і на вкладці з властивостями елементу знайдемо властивість On Click і запишемо в нього onClick - ім'я методу, який оброблятиме натиснення на кнопку. Як це виглядає показує рисунку 2.15.



настройка свойства on click для кнопки

Рисунок 2.15 - Налаштування властивості On Click для кнопки


Ці ж дії можна виконати у фалі activity _ main.xml, досить дописати виділений на рисунку 2.16 рядок:

настройка свойствами on click для кнопки в файле xml

Рисунок 2.16 - Налаштування властивостями On Click для кнопки у файлі XML


Для налаштування властивостей елементів інтерфейсу досить використати будь-який спосіб: графічний або редагування XML файлу.

Повернемося у файл MainActivity.java, в клас активності необхідно додати метод:

public void onClick (View v){...}

Ім'я методу не обов'язково має бути onClick (), головне, щоб воно співпадало з ім'ям, вказаним у властивості On Click. У цьому методі і відбуватиметься усе наше програмування в цій лабораторній роботі.

Нам знадобляться дві змінні:

- цілочисельна для зберігання загаданого числа (випадкове число від 1 до 100);

- логічна для зберігання стану закінчена гра або ні.

Обидві ці змінні має сенс оголосити як поля класу активності, первинні значення присвоїти в методі onCreate.

Отримати цілочисельне значення з поля введення, можна за допомогою наступної конструкції:

Integer.parseInt (etInput.getText ().toString())

Змінити значення тексту в інформаційному полі можна за допомогою наступної конструкції:

tvInfo.setText (getResources ().getString (R.string.ahead));

В даному випадку в інформаційному полі з'явиться значення строкового ресурсу з ім'ям ahead.

Залишилося реалізувати логіку додатка в методі onClick (). Пропонуємо написати код цього методу самостійно, для контролю в додатку запропонований лістинг, який містить один з варіантів коду описаного застосування.


2.5 Трохи про роботу з емулятором

При виконанні цієї роботи ми використали емулятор для перевірки працездатності додатка. Розглянемо деякі можливості, що полегшують і прискорюють взаємодію з віртуальним пристроєм.

По-перше, існує набір корисних комбінацій клавіш для управління віртуальним пристроєм:

- Alt Enter - розгортає емулятор до розмірів екрану;

- Ctrl F11 - міняє орієнтацію емулятора з портретною на альбомну і назад;

- F8 - включає/вимикає мережу.

Повний список комбінацій клавіш для роботи з емулятором можна знайти по посиланню: http://developer.android.com/tools/help/emulator.html.

По-друге, хто б не працював з емулятором, той на собі відчув наскільки терплячим потрібно бути, щоб взаємодіяти з ним, так повільно він працює. Існує рішення для прискорення роботи емулятора Android і цим рішенням являється Intel Hardware Accelerated Execution Manager (Intel® HAXM).

Intel Hardware Accelerated Execution Manager (Intel® HAXM) - це додаток з підтримкою апаратної віртуалізації (гіпервізор), яке використовує технологію віртуалізації Intel для прискорення емуляції додатків Android на комп'ютері для розробки.

(http://software.intel.com/ru-ru/android/articles/intel-hardware-accelerated-execution-manager)

Intel HAXM здатний прискорити роботу емулятора для x86 пристроїв. При цьому емулятор працюватиме зі швидкістю, наближеною до швидкості роботи реального пристрою, що допоможе скоротити час на запуск і відладку додатка. Детально познайомитися з установкою Intel HAXM і налаштуванням емулятора на роботу з прискорювачем можна в статті по посиланню: http://habrahabr.ru/company/intel/blog/146114/.

По-третє, не варто переривати процес запуску віртуального пристрою, наберіться терпіння, на старих комп'ютерах перший запуск AVD може зайняти до 10 хвилин, на сучасних - від однієї до трьох хвилин. Після того, як створили і запустили віртуальний пристрій має сенс залишити його відкритим, при усіх подальших запусках додатка використовуватиметься вже відкритий віртуальний пристрій, що дозволить заощадити час.


2.6 Висновок

У лабораторній роботі розглянутий процес розробки простого додатка переднього плану. Описано створення активності, налаштування інтерфейсу і реалізацію логіки додатка. Інших компонентів в додатку не передбачено. У подальших роботах розглядатимуться додатки, що містять декілька активностей. Змішані застосування, які працюють на передньому плані і при цьому підтримують сервіси, працюючі у фоновому режимі.


Завдання для самостійної роботи:

Зрозуміло запропонована в додатку реалізація не ідеальна, вимагає доопрацювань:

- Що станеться, якщо кнопка буде натиснута до введення якого-небудь числа? Скоріш всього додаток буде зупинено, необхідно якось відстежувати цей варіант розвитку подій і адекватно реагувати. Пропонуємо попрацювати самостійно над цією проблемою.

- Що станеться, якщо користувач введе число менше нуля або більше 100? Скоріш всього додаток обробить це введення, але було б краще, якби з'явилося повідомлення про те, що введене число не задовольняє умовам завдання.

- Як завершити додаток? І чи потрібно це робити?

- Пропонуємо подумати, як ще можна поліпшити додаток і самостійно реалізувати ці поліпшення.


1   2   3   4   5



  • Завдання лабораторної роботи
  • 2.2 Створення додатка і вивчення його структури
  • 2.3 Налаштування інтерфейсу додатка
  • 2.4 Реалізація логіки додатка
  • 2.5 Трохи про роботу з емулятором
  • Завдання для самостійної роботи