You are on page 1of 52

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДНІПРОВСЬКИЙ ДЕРЖАВНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

МЕТОДИЧНІ ВКАЗІВКИ
до лабораторних робіт
з дисципліни
«ТЕХНОЛОГІЇ ТА ЗАСОБИ СТВОРЕННЯ ПРОГРАМНОГО
ЗАБЕЗПЕЧЕННЯ АСУ» (модуль 2)
для здобувачів вищої освіти першого (бакалаврського) рівня
зі спеціальності 121 «Інженерія програмного забезпечення»
за освітньо-професійною програмою «Інженерія програмного
забезпечення»

Затверджено редакційно-видавничою
секцією науково-методичної ради ДДТУ
протокол № 5 від 22.05.2018 р.

Кам’янське
2018
2
Розповсюдження і тиражування без офіційного дозволу Дніпровського
державного технічного університету заборонено.

Методичні вказівки до лабораторних занять з дисципліни «Технології та


засоби створення програмного забезпечення АСУ» (модуль 2) для здобувачів
вищої освіти першого (бакалаврського) рівня зі спеціальності 121 «Інженерія
програмного забезпечення» / Укл. Красніков К.С. // Кам’янське: ДДТУ, 2018. —
52 с.

Укладач: к.т.н., ст. викладач Красніков К.С.

Рецензент: к.т.н., доцент Надригайло Т.Ж.


(Дніпровський державний технічний університет)

Затверджено на засіданні кафедри ПЗС (протокол № 4 від 26.04.2018р.)

Коротка анотація видання. Наведено зміст та описання лабораторних робіт


з дисципліни «Технології та засоби створення програмного забезпечення АСУ»
для набуття знань та навичок побудови Android-додатків за допомогою мови
програмування Java.
3
ЗМІСТ

№ ЛР Стор.

Загальні положення 4
Основні вимоги з охорони праці 4
1 Побудова першого Android-додатку з графічним інтерфейсом 5
Позиціонування графічних елементів Button, TextView і EditText в
2 13
контейнерах LinearLayout і RelativeLayout мовою Xml
Створення графічного інтерфейсу додатка з використанням
3 17
стандартних компонентів на мовах Xml і Java
Виведення на екран згрупованої графічної і текстової інформації за
4 21
допомогою контейнерів ListView та GridView мовами Xml і Java
Анімація графічних елементів з використанням ObjectAnimator,
5 25
ViewPropertyAnimator мовою Java і XML
Робота з системою управління базами даних SQLite Android-
6 28
пристрою мовою Java
Створення і відображення векторної 2D-графіки на екрані Android-
7 33
пристрою мовою Java
Створення і відображення 3D-моделей на екрані Android-пристрою
8 40
за допомогою технології OpenGL ES мовою Java
Перелік літератури та інформаційних ресурсів 48
Порядок виконання і захисту робіт 48
Запитання для перевірки 49
Приклад заповнення титульного аркуша звіту 51
4
Загальні положення
Мета викладання дисципліни спрямована на формування представлень про
методи проектування і розробки програмного забезпечення (ПЗ) АСУ,
принципів побудови, структури і прийомів роботи з інструментальними
засобами, що підтримують створення ПЗ АСУ, методів організаційної роботи в
колективах розробників ПЗ.

Основні вимоги з охорони праці


При виконанні лабораторних робіт студент повинен дотримуватися нижче
зазначених правил техніки безпеки:
1. Починати роботу тільки після проходження інструктажу з техніки
безпеки.
2. Не вмикати/вимикати самостійно рубильник в комп’ютерному залі.
3. При виконанні лабораторних робіт за комп’ютером може знаходитись
не більше ніж два студента.
4. Не вводити власних паролів або іншу конфіденційну інформацію у
комп’ютер.
5. Не змінювати налаштувань комп’ютера.
6. Не встановлювати та не видаляти жодних програм без дозволу
викладача.
7. Закінчивши виконання лабораторної роботи студент повинен
скопіювати результати на носій, закрити всі програми, з якими
працював без збереження своїх результатів і повідомити викладача про
закінчення роботи.
8. Зареєструватись у журналі користувачів комп’ютерного залу.
5
Лабораторна робота № 1. Побудова першого Android-додатку з графічним
інтерфейсом
Мета роботи: навчитися створювати Android-проекти у засобі розробника
Android Studio та запускати додаток у режимі налагодження для пошуку
можливих помилок, а також дізнатися основи верстки Android-додатків,
зокрема, як створити простий користувальницький інтерфейс з двома екранами.
Виконання роботи
Для початку необхідно встановити один із засобів розробника: Eclipse ADT
– стара версія засобу для малопотужних комп’ютерів; Android Studio – сучасна
версія засобу, яка буде використана надалі. Необхідно скачати Android Studio
на сайті https://developer.android.com/studio/index.html і запустити скачаний exe-
файл для подальшого автоматичного встановлення засобу на комп’ютер.
1. В Android Studio: створіть новий проект у стартовому вікні — «Start a
new Android Studio project», або за допомогою меню File > New Project.
2. На екрані з’явиться вікно «New Project», в якому необхідно надати назву
проекту у полі Application name. Унизу вікна відображається шлях до папки
проекту, де будуть створюватися всі пов’язані з проектом файли.

3. Після натискання кнопки у наступному вікні можна змінити


мінімальну версію Android, для якої розробляється проект, тиснемо кнопку
«Next».
6
4. У наступному вікні обраємо Empty Activity (спробуйте при нагоді й
інші шаблони інтерфейсу користувача), тиснемо «Next».

5. У наступному вікні «Customize the Activity», знімемо галочку з поля


Backwards Compatibility (AppCompat) для одержання більш простого коду.

6. Тиснемо кнопку Finish і чекаємо дві хвилини поки Android


Studio налаштовує проект. Далі відкриваємо панель «Project» як на рисунку
нижче і звертаємо увагу на важливі файли, які з’явилися у папці проекту.

Файл маніфесту описує основні


характеристики і компоненти додатку.

Файл на мові Java основної Активності


(точка входу для додатка). Під час
створення та запуску додатка система
запускає екземпляр цієї Активності.
7
XML-файл - визначає макет інтерфейсу
користувача. Зараз він містить елемент
TextView із текстом "Привіт світ!".

Файл налаштувань Gradle-системи, яка


створює додаток (apk-файл). Його
можна використовувати, наприклад, для
підключення інших проектів.

7. Далі натиснемо кнопку Debug ‘app’ (Shift+F9) для запуску нашого


першого проекту.

8. Якщо в проекті немає помилок, Android Studio створить apk-файл


(додаток) і у наступному вікні запропонує вказати один з Android-пристроїв,
підключених до комп’ютера, або віртульний пристрій — емулятор — для
встановлення і запуску додатка. Якщо ви маєте Android-пристрій, підключить
його до комп’ютера через USB кабель (для перемикання в режим налагодження
додатку необхідно також ввімкнуть опцію USB debugging в налаштуваннях
розробника на Android-пристрої). Далі обираємо ваш пристрій і тиснемо кнопку
OK.
8
Якщо у вас не має Android-пристрою і перелік пристроїв порожній, тоді
тиснемо кнопку Create New Virtual Device і у наступних вікнах «Select
Hardware» і «System Image» — погоджуємося з умовами і тиснемо кнопку Next,
а в останньому вікні «Android Virtual Device(AVD)» — кнопку Finish. Таким
чином буде створено емулятор Android-пристрою, на якому можна
налагоджувати додаток.
9. На екрані пристрою ваша програма відображає текст “Hello World!” або
"Привіт світ!". Тепер спробуйте додати інший графічний елемент на екран,
наприклад кнопку. Для цього відкрийте файл app>res>layout>activity_main.xml
на панелі Project.

Основний XML-файл для


визначення інтерфейсу
користувача.

10. З’явиться схематичний вид вашого додатку і палітра компонентів зліва,


натисніть на компоненті Button, перенесіть його до тексту «Hello World!» і
відпустіть.
9
Кнопка з надписом «Button» з’явиться поряд з текстом «Hello World!»
11. Для запуску програми натиснемо кнопку Debug ‘app’
(Shift+F9) і на екрані пристрою побачимо результат.
12. Тепер створимо другий екран і при натисканні кнопки «Button» будемо
його викликати. Відкриємо файл “MainActivity.java” і додамо метод із назвою
sendMessage у клас MainActivity. На рядку № 35 оголошено стартовий метод
onCreate активності, який завжди викликається системою під час запуску цієї
активності. Параметр «savedInstanceState» методу містить дані, збережені під
час зупинки додатку. На рядку № 37 викликається «setContentView»

13. Відкриємо “activity_main.xml”, перейдемо на вкладку «Design» внизу


екрану, натиснемо на кнопку «Button» на екрані і
введемо «sendMessage» у полі «onClick» на панелі
«Properties» справа.
10
14. Відкриємо файл “MainActivity.java” і додамо код для виклику другого
екрану. Підказка пропонує натиснути клавіші Alt+Enter для імпорту класу Intent
з пакету “android.content”.

15. Рядок № 43 створює у пам’яті необхідний надалі екземпляр класу


Intent. У рядку № 44 змінна «textView» одержує значення вказівника на
компонент першого екрану з ідентифікатором (id) «textView». У рядку № 45
змінна «message» одержує значення поля «Text», звертаючись до компонента
через змінну «textView». У рядку № 46 додаємо значення змінної «message» у
екземпляр «intent» і викликаємо стандартний метод «startActivity» для обробки
системою. Таким чином передаються дані (intent) у другий екран, який система
покаже на пристрої. Клас активності DisplayMessageActivity (буде другим
екраном) необхідно додати у проект. Для цього оберемо відповідний пункт у
контекстному меню як показано на рисунку.
11
16. У полях «Activity Name» і «Hierarchical Parent» введемо відповідні
значення. Натиснемо кнопку Finish. Android Studio автоматично створить
файли DisplayMessageActivity.java і activity_display_message.xml відповідно, а
також додасть необхідний елемент <activity> в AndroidManifest.xml .

17. Якщо запустити додаток і натиснути кнопку, то побачимо другий


екран. Допоки він порожній. Натиснемо надпис «DisplayMessageActivity» для
повернення на основний екран.

18. Далі для виводу тексту повідомлення, яке передано з головного екрану,
додаємо на другий екран елемент TextView.
12
19. Відкриваємо файл DisplayMessageActivity.java і заповнюємо його
відповідним кодом.

20. Після запуску побачимо на другому екрані повідомлення. Android


Studio має кнопку збереження фотознімку з екрана пристрою.

21. У файлі activity_main.xml можна змінити текст «Hello World!» на


«Привіт Світ!».

22. Вітання! Побудовано Ваш перший Android-додаток. У якості варіантів


роботи змініть властивості компонентів «Button» і «TextView», наприклад:
13
Лабораторна робота № 2. Позиціонування графічних елементів Button,
TextView і EditText в контейнерах LinearLayout і RelativeLayout мовою Xml
Мета роботи: навчитися використовувати LinearLayout і RelativeLayout
для розташування кнопки, надпису і тестового поля в інтерфейсі користувача
(екран).
Теоретичні дані. Компоненти LinearLayout і RelativeLayout є
контейнерами для інших компонентів і автоматично розміщують їх на екрані
відповідно до визначених правил. У xml-файлі ці компоненти визначаються
початковим тегом (словом), атрибутами (наприклад layout_width), іншими
елементами і кінцевим тегом, наприклад:
<LinearLayout android:layout_width="match_parent">
<TextView android:text="Текст" /><!--Інші елементи-->
</LinearLayout>
Основні атрибути (налаштування) графічних компонентів
layout_width Ширина компонента. Значення match_parent – означає, що
ширина LinearLayout буде дорівнювати ширині його контейнера.
Значення wrap_content – означає, що ширина компонента
визначатиметься відповідно до його змісту (дочірніх елементів).
layout_height Теж саме, тільки для висоти компонента.
padding Внутрішній відступ від меж компонента до його змісту.
Значення складається з 4-х чисел відповідно до 4-х сторін.
margin Зовнішній відступ від меж компонента до його оточення. Також
має 4 числа відповідно 4-м сторонам компонента.

Основні налаштування LinearLayout і його елементів


orientation Встановлює вертикальне (vertical) або горизонтальне (horizontal)
розташування елементів.
layout_gravity Визначає розташування для вказаного елемента відносно інших,
наприклад, center – відцентрує елемент.
14
layout_weight Визначає скільки місця необхідно дати вказаному елементу
відносно інших елементів.

Основні налаштування для елементів, які знаходяться в RelativeLayout


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

Виконання роботи
1. Створіть новий xml-файл розмітки (layout):

2. Розмістіть кнопку (Button), текстове поле (EditText) і надписи


(TextView) як показано на рисунках нижче:

Варіант № 1. На нижній половині показано схему розташування елементів


(зверху показано як екран мусить виглядати на пристрої). LinearLayout на
синьому фоні означає тип стандартного контейнера для трьох елементів
TextView, EditText і Button
15

Варіант № 2

Варіант № 3 Варіант № 4
16

Варіант № 5 Варіант № 6

Варіант № 7 Варіант № 8
Всі дії необхідно представити у звіті.
17
Лабораторна робота № 3. Створення графічного інтерфейсу додатка з
використанням стандартних компонентів на мовах Xml і Java
Мета роботи: навчитися використовувати в графічному інтерфейсі
інтерактивні компоненти Spinner, EditText, Button, CheckBox, RadioButton,
SeekBar, Switch, DatePicker, TimePicker, AutoCompleteTextView, ProgressBar.
Теоретичні дані. Інтерактивні компоненти мають можливість реагувати на
відповідні події за допомогою обробників подій, які необхідно створ ювати в
Java-файлі. Далі подано пояснення до компонентів для використання.
Spinner Відображає один з елементів, підключених до компонента
через Adapter в Java-файлі і дозволяє користувачеві обирати
серед них.
setAdapter Встановлює екземпляр адаптера, який використовується для
надання даних.
setOnItem- Реєструє відповідну функцію з аргументами для виклику,
SelectedListener якщо користувач обирає один з елементів.
Array- Застосовується для надання вигляду елементам відповідно
Adapter<String> даним. В даному випадку даними є рядки тексту (String).

EditText Компонент для введення і зміни тексту користувачем.


inputType встановлює один із заздалегідь відомих типів
текстової інформації.
setText Встановлює текст, який відображає компонент.
setBackground- Встановлює колір фону компонента.
Color

Button Користувач має змогу натискати цей компонент для виконання


різноманітних дій.
setOnClick- Реєструє відповідну функцію з аргументами для виклику, якщо
Listener користувач натискає на компонент.
18
CheckBox Кнопка з двома станами: «з позначкою» і «без позначки».
setOnChecked- Реєструє функцію для виклику, якщо користувач змінює стан
ChangeListener кнопки натисканням.

RadioButton Кнопка з двома станами: «з позначкою» і «без позначки». Однак


на відміну від CheckBox, при натисканні на цей компонент у
стані «з позначкою» він не змінює свого стану на «без
позначки», для чого необхідно створити другий компонент
RadioButton і додати обидва у контейнер RadioGroup. Як і
CheckBox цей компонент має метод setOnCheckedChangeListener

SeekBar Показує область у якій може змінюватися значення і поточне


значення. Користувач може перетягувати повзунок для зміни
поточного значення.
setOnSeekBar- Реєструє функцію для отримання повідомлень про зміну
ChangeListener поточного значення користувачем.

Switch Має вигляд перемикача, який можна натискати та перетягувати


для переключення станів «Ввімкнено» або «Вимкнено».
Компонент дозволяє встановити текст для кожного стану і
зовнішній вигляд.

DatePicker Дає можливість легко обрати дату.


init Встановлює початкову дату.

TimePicker Компонент для обрання часу дня в форматі 24-х годин або 12-
ти.
setOnTime- Реєструє функцію для виклику, якщо користувач змінює час.
ChangedListener
19
AutoComplete- Автоматично відображає пропозиції щодо завершення слів під
TextView час введення тексту. Перелік пропозицій подається через
Adapter, наприклад, ArrayAdapter<String>.

ProgressBar Графічний елемент для відображення перебігу процесу. Можна


встановлювати для цього компонента два стани: визначений
(якщо значення відоме) і невизначений (якщо точне значення
невідоме і процес продовжується ).
setProgress Встановлює поточне значення.

Виконання роботи
3. У новому xml-файл розмітки (layout) спробуйте створити інтерактивний
інтерфейс користувача, який би відповідав наданим рисункам:

Варіант 1

Варіант 2
20

Варіант 3

Варіант 4

Варіант 5

Варіант 6
Всі дії необхідно представити у звіті.
21
Лабораторна робота № 4. Виведення на екран згрупованої графічної і
текстової інформації за допомогою контейнерів ListView та GridView мовами
Xml і Java
Мета роботи: навчитися використовувати ListView та GridView в
графічному інтерфейсі додатку для відображення масиву даних по визначеному
шаблону.
Теоретичні дані. Компоненти ListView і GridView дозволяють
автоматизувати відображення та інші дії користувача з переліком даних. Також
вони мають широкі можливості для налаштування:
ListView Відображає колекцію елементів з вертикальною прокруткою.
Елементи розташовуються один понад іншим. Іншим схожим
компонентом є RecyclerView.
setAdapter Встановлює екземпляр адаптера, який використовується для
надання даних і відповідного шаблону.
setOnItem- Реєструє функцію з аргументами для виклику, якщо
SelectedListener користувач обирає один з елементів.
Array- Застосовується для надання вигляду елементам відповідно
Adapter<String> даним. В даному випадку даними є рядки тексту (String).
<ListView a:id="@+id/lv" a:layout_width ="match_parent"
a: layout_height="wrap_content">
</ ListVie w >
GridView Відображає елементи у табличному вигляді з можливістю
прокрутки. Елементи визначаються за допомогою
підключеного екземпляру ListAdapter.
numColumns Визначає кількість стовпчиків
stretchMode Визначає як стовпчики займають вільне місце
columnWidth Визначає фіксовану ширину стовпчиків
verticalSpacing Визначає вертикальний простір між рядками
<GridVie w a:id="@+id/gv" a:layout_width ="match_parent" a:layout_height="wrap_content"
a:numColumns="auto_fit" a: stretchMode="columnWidth" a:columnWidth="100dp"
22
a:verticalSpacing="5dp" a:horizontalSpacing="5dp" ></GridView >
Виконання роботи
Необхідно побудувати інтерфейс користувача з використанням ListView і
GridView як подано на рисунках. Створимо xml-файл розмітки (layout) для
розташування компонентів на екрані «lab4_var1.xml» – назву файлу будемо
використовувати далі у java-програмі.

Відкриємо файл MainActivity.java і запишемо код програми, яка створює


масив текстових рядків і відображає їх на екрані за сприяння компонента
ListView і стандартного шаблона для кожного рядка «simple_list_item_1».

Спробуємо стартувати додаток і, якщо є помилки, виправимо їх. На екрані


повинен з’явитися перелік рядків тексту, який можна прокрутити:
23
Варіант 1. Виведення переліку рядків з текстом

Варіант 2. Відображення тексту з обраного рядка у повідомленні (Toast)

Варіант 3. Використання адаптера для відображення складного змісту


24
Варіант 4. Табличне відображення текстового масиву компонентом GridView

Варіант 5. Табличне відображення складного змісту компонентом GridView

Варіант 6. Відображення масиву картинок компонентом GridView

Всі дії необхідно представити у звіті.


25
Лабораторна робота № 5. Анімація графічних елементів з використанням
ObjectAnimator, ViewPropertyAnimator мовою Java і XML
Мета роботи: вивчити особливості анімації компонентів інтерфейсу
користувача за допомогою ObjectAnimator, ViewPropertyAnimator.
Теоретичні дані. ObjectAnimator реалізує можливість анімації вказаних
властивостей об’єкта із визначенням тривалості та інших налаштувань.
Спеціально для елементів графічного інтерфейсу існує ViewPropertyAnimator,
який дозволяє створювати автоматично працюючу оптимізовану анімацію
вказаних властивостей елемента інтерфейсу користувача (View), наприклад
кнопки.

ObjectAnimator Визначає довжину анімації у мілісекундах.


setDuration
setPropertyName Встановлює ім’я властивості, наприклад, “alpha”.
setTarget Вказує об’єкт, властивість якого треба анімувати.
start Розпочинає анімацію.

ViewPropertyAnimator Встановлює значення прозорості елемента, яке


alpha необхідно досягнути у ході анімації.
cancel Зупиняє всі анімації властивостей елементу
rotation Встановлює необхідне значення обертання елемента у
градусах
scaleX Необхідне значення масштабування по горизонталі
translationX Встановлює перенесення по горизонталі

Виконання роботи
Необхідно створити додаток, який використовує ObjectAnimator,
ViewPropertyAnimator для різних видів анімації. У файлі MainActivity.java
запишемо найпростіший код, як показано на першому рисунку нижче. Після
виправлення помилок і старту додатку на екрані з’явиться кнопка, яка повинна
26
рухатися вправо. Далі наведено інші варіанти анімацій, у тому числі з
визначенням їх у xml-файлі в директорії res/animator.

Варіант 1. Рух кнопки по горизонталі

Варіант 2. Об’єднання декількох наборів анімацій в одну для легкого керування

Варіант 3. Використання по-кадрової анімації

Варіант 4. Об’єднання декількох наборів анімацій в одну для легкого керування


27

Варіант 5. Визначення анімації у xml-файлі «my_pro_animator.xml» і


завантаження його у java-коді

Варіант 6. Визначення налаштувань анімації у xml-файлі


«my_val_animator.xml», завантаження його у java-коді і оновлення властивості
елемента

Всі дії необхідно представити у звіті.


28
Лабораторна робота № 6. Робота з системою управління базами даних SQLite
Android-пристрою мовою Java
Мета роботи: навчитися використовувати базу даних SQLite для
збереження структурованої інформації.
Теоретичні дані. SQLiteOpenHelper дозволяє спростити процес створення
бази даних і надає екземпляр класу SQLiteDatabase для керування даними в
базі, наприклад, видалення та оновлення записів у таблицях. Використовуючи
Cursor одержуються результати виконання запиту.

SQLiteDatabase Виконує запит, який не повертає жодних даних.


execSQL
query Запит з аргументами відповідно стандартному SELECT.

Cursor Встановлює курсор на перший елемент в результаті запиту.


moveToFirst
moveToNext Переходить до наступного елементу.

Виконання роботи
Створимо додаток для зчитування всіх рядків з таблиці в базі даних. Також
забезпечимо можливість додавання користувачем нових рядків і видалення
існуючих.
По-перше створимо xml-файл розмітки в директорію layout і в ньому
додамо ListView, EditText, Button як на рисунку нижче. Після виправлення
помилок і старту додатку внизу екрана з’явиться кнопка поряд з текстовим
полем.
По-друге у java-файлі всередині процедурі «onCreate» підключимо
створений xml-файл (setContentView) і подамо заявку на реєстрацію
контекстного меню для ListView (registerForContextMenu). Далі на рисунках
наведено подальший код додатку.
29

Xml-файл розмітки інтерфейсу користувача

Підключення xml-файлу розмітки і реєстрація контекстного меню

Оновлення екрану через виконання Task, реалізація якого є нижче

Процедура додавання введеного користувачем тексту в базу


30

Визначення пунктів меню з призначенням ідентифікаційних чисел

Видалення рядка або відображення його тексту у відповідь на обрання


користувачем відповідного пункту контекстного меню
31

Визначення класу Task для одержання рядків із БД

Визначення класу для підключення і взаємодії з БД


32

Визначення класу помічника у створенні БД

Варіанти розвитку додатку:


1. Додати числовий стовпчик до таблиці БД і забезпечити користувача
можливістю оновлення всіх стовпців обраного рядка у ListView новим змістом.
2. Натомість стандартного ArrayAdapter, який використано на рисунках
вище, реалізувати свій адаптер для більш складного виведення даних у
ListView.
3. Додати до таблиці у БД два стовпчика (числовий і текстовий),
забезпечити унікальність значень у ньому під час додавання рядка, відобразити
їх значення на екрані і використовувати один з них для видалення рядків.
4. Запрограмувати посторінковий перегляд рядків із таблиці з визначеною
максимальною кількістю рядків, які відображаються на екрані за допомогою
ListView і можливістю користувача переходити до попередньої або наступної
сторінки.
5. Запрограмувати впорядкування рядків у ListView за новими текстовим
або чисельним стовпчиками таблиці БД з можливістю вибору користувачем
напрямку сортування (за алфавітом і навпаки, за зростанням і зменшенням).
33
Лабораторна робота № 7. Створення і відображення векторної 2D-графіки на
екрані Android-пристрою мовою Java
Мета роботи: навчитися використовувати стандартні класи для рисування
на екрані пристрою 2D-графіки.
Теоретичні дані. Canvas дозволяє рисувати на карті точок (Bitmap) різні
види 2D-зображень, наприклад, лінії, інші рисунки. Також він враховує такі
налаштування, як товщина, колір ліній, згладжування країв.

Canvas Відображає рисунок на канві.


drawBitmap
drawPath Рисує лінію.

Path Рисує лінію квадратичним методом Без’є.


quadTo
reset Очищає лінію від точок.

Виконання роботи
Створимо додаток, який зчитує інформацію про дотик екрану і рисує лінії
відповідно руху під час дотику. Також забезпечимо користувача збереженням
створеного рисунку у зовнішній носій, для чого необхідно у файлі
AndroidManifest.xml перед «<application» додати рядок про використання
додатком дозволу:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Створимо java-файл з Activity, яку назвемо PaintActivity. Компонентом для
відображення на екрані буде клас PaintView, який визначається далі. Також
додамо меню, за допомогою якого користувач змінює колір лінії на білий,
очищає рисунок і зберігає його. Запишемо код як показано на рисунках нижче,
виправимо помилки і дамо старт додатку.
34

Визначення констант для меню і підключення PaintView

Додавання пунктів меню з id і виклик відповідних процедур у PaintView


35

Початок визначення класу PaintView із значеннями за замовченням


36

Процедури взаємодії із рисунком і лінією

Перерисовка екрана і реагування на різні події з дотиком екрану


37

Процедура, яка виконується на початку дотику


38

Процедура, яка виконується впродовж руху під час дотику і наприкінці

Процедура збереження рисунка


39

Екран пристрою з додатком

Варіанти розвитку додатку:


1. Запрограмувати можливість для користувача змінювати товщину лінії за
допомогою компонента SeekBar.
2. Реалізувати можливість для користувача змінювати колір ліній через
обрання його з заданого переліку або введенням значень rgb.
3. Зберігати шлях до рисунку, який в останнє був збережений
користувачем, і показувати його на екрані при відкритті додатку.
4. Реалізувати для користувача вибір іншої картинки з пристрою і
додавання її до рисунка.
5. Запрограмувати можливість для користувача додавати до рисунка
кольоровий фільтр (сірі тони, виділення країв, розмиття або інші).
6. Реалізувати скасування і повторення дій користувача з рисунком.

Всі дії необхідно представити у звіті.


40
Лабораторна робота № 8. Створення і відображення 3D-моделей на екрані
Android-пристрою за допомогою технології OpenGL ES мовою Java
Мета роботи: навчитися використовувати OpenGL у Android-додатках для
виведення на екран 3D-графіки.
Теоретичні дані. GLSurfaceView – це спеціальний компонент з поверхнею
для зображення OpenGL графіки. До нього необхідно підключити (setRenderer)
екземпляр класу GLSurfaceView.Renderer, в якому потрібно реалізувати
стандартні процедури onSurfaceCreated, onDrawFrame, onSurfaceChanged.

GLSurfaceView. Викликається системою вслід за створенням поверхні або її


Renderer перезавантаженням.
onSurfaceCreated
onDrawFrame Викликається для рисування поточного кадру.
onSurfaceChanged Викликається у випадку зміни розміру поверхні.

Виконання роботи
Розробимо додаток для відображення на екрані квадрата і трикутника, які
обертаються навколо вертикальної вісі. Якщо користувач торкається екрана,
тоді будемо обертати трикутник навколо своїй вісі. Використання OpenGL
потребує додавання у файл AndroidManifest.xml перед «<application» рядка про
використання додатком особливості:
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
Створимо java-файл з Activity, яку назвемо OpenGLES20Activity.
Компонентом для відображення на екрані буде клас MyGLSurfaceView, який
визначається далі.
41

Початок визначення класу діяльності (Activity)


42
Процедури компіляції шейдера і перевірки помилок

Компонент інтерфейсу для відображення графіки OpenGL


43
Клас для роботи з OpenGL

Процедура рисування

Процедура, яка викликається при зміні поверхні


44

Клас, якій містить дані для рисування трикутника


45

Конструктор класса Triangle


46
Процедура рисування трикутника

Клас для рисування квадрату

Конструктор класу Square


47

Процедура рисування квадрату

Екран пристрою з додатком


Варіанти розвитку:
1. Масштабувати фігури за допомогою подвійного торкання екрану.
2. Додати мелодію і програвати її з використанням класу MediaPlayer.
3. Запрограмувати можливість користувача змінити колір фігур.
48
4. Обирати фігуру дотиком і змінювати її розташування у просторі.
5. Створити узагальнюючий клас для рисування квадрату, трикутника,
куба і циліндра.
Всі дії необхідно представити у звіті.

Перелік літератури та інформаційних ресурсів


1. Dawn Griffiths, David Griffiths. Head First Android Development.A Brain-
Friendly Guide. O'Reilly Media, 2005. – 677 p.
2. Харди Б., Филлипс Б., Стюарт К., Марсикано К. Android.
Программирование для профессионалов. 2-е изд. — СПб.: Питер, 2016. —
640 с. ISBN 978-5-496-02051-0
3. П. Дейтел, Х. Дейтел, Э. Дейтел, М. Моргано. Android для
программистов: создаём приложения. — СПб.: Питер, 2013. 560 с. ISBN 978-5-
459-01646-8
4. Phillips B, Hardy B. Android Programming. The big nerd ranch guide. Big
Nerd Ranch, Inc, 2013. — 625 p. ISBN-13 978-0321804334
5. https://developer.android.com/guide/index.html

Порядок виконання і захисту робіт


1. Під час виконання роботи студент користується літературою і
конспектом лекцій.
2. Робота виконується в обчислювальному залі на лабораторних заняттях і
в часи самостійної роботи.
3. Виконана лабораторна робота надається викладачу на перевірку у
вигляді архіву з вихідним кодом (проекту середовища програмування),
виконавчими файлами (apk, exe або інші) і звітом, обов’язковими розділами
якого є: мета роботи, умови завдань і результати їх виконання.
4. Після перевірки роботу необхідно доопрацювати відповідно до
зауважень викладача і подати роботу знов.
5. Захист виконаної роботи відбувається під час лабораторних занять і
консультацій. На захисті студент повідомляє про завдання і виконані ним дії
під час виконання роботи, а також відповідає на запитання і одержує оцінку.
49
Запитання для перевірки

1. Під словом 'Android' мають на увазі ...


2. Activity (Діяльність) призначена для …
3. Життєвий цикл Activity (послідовність, за якою система викликає функції):
4. Використання Activity без xml-файла розмітки інтерфейса користувача
дозволено?
5. Для одержання даних від іншої Activity необхідно використовувати ...
6. Для завершення Activity потрібно використовувати метод ...
7. Сontext в Android-додатку використовується для ...
8. Оберіть правильний за назвами layout-тів перелік:
9. Чим відрізняється Margin і Padding, заданих для компонентів UI?
10. Яка інформація знаходиться в AndroidManifest.xml?
11. Чим відрязняється Thread від Service?
12. Який метод використовується для зупинки Service?
13. Як передати дані з Activity в Service?
14. Які з поданих наборів методів має клас AsyncTask?
15. Скільки потоків виділяється для виконання завдання AsyncTask.
16. Для чого використовується broadcast receiver при розробці додатку?
17. Яке призначення має content provider у додатку?
18. Як отримати доступ до глобального context-у додатку?
19. Чим відрізняються екземляри класів Cursor і ContentValues?
20. Для збереження структурованих даних у додатку краще використовувати...
21. Анонімний клас - …
22. Одиничний (Singleton) клас (з шаблонів програмування класів) - …
23. Які permissions (дозволи) необхідно встановити для додатка з метою
отримати георозташування мобільного пристрою
24. Точка зупинки (Breakpoint) в Eclipse або Android Studio ...
25. Розшифровкою абревіатури DDMS є …
26. Розшифровкою абревіатури ADB є …
50
27. Які засоби використовуються для налагодження (debugging) додатків?
28. Як одержати інформацію про причину аварійного завершення додатку і
номер рядка в коді, де це сталося?
29. Які функціональні можливості має HTTP Client в стандартній бібліотеці?
30. Який результат повертає функція HttpClient.execute(request) при її
виклику?
31. Які дії необхідно зробити для виводу на екран гугл-карти при першому
знайомстві з гугл-картами?
32. За допомогою коду на якій мові можна оновити частину екрану додатку в
процесі його виконання
33. Які номера відповідають помилці у HTTP-відповіді сервера (status code)
34. Який метод повертає кількість пар 'ключ-значення' в екземплярі класу
JSONObject
35. Fragment - …
36. Яка базова кількість орієнтацій екрану існує в Android?
37. Послідовність визову функцій Fragment-у:
38. На яких рівнях перевіряється безпека виконання додатків Android?
39. Навіщо викликати функцію super.onCreate при реалізації свого классу
Activity?
40. Обов’язково реалізовувати методи onStart і onStop при створенні нового
підкласу Activity?
51
Приклад заповнення титульного аркуша звіту
Міністерство освіти і науки
Дніпровський державний технічний університет
Кафедра «Програмного забезпечення систем»

ЗВІТ
до лабораторних робіт з дисципліни
«Технології та засоби створення програмного забезпечення АСУ»
(модуль 2)

Виконав:
студент гр. ПЗ – ___ – ___ В.Р. Петренко
Перевірив:
викладач каф. ПЗС К.С. Красніков

Кам’янське
20__
52
НАВЧАЛЬНЕ ВИДАННЯ
Методичні вказівки до лабораторних робіт з дисципліни «Технології та
засоби створення програмного забезпечення АСУ» (модуль 2) для здобувачів
вищої освіти першого (бакалаврського) рівня зі спеціальності 121 «Інженерія
програмного забезпечення».

Укладач:

к.т.н., ст. викл. Красніков К.С.

Підписано до друку ________________


Формат ___ Обсяг ___________ др. арк.
Наклад ____ прим. Замовлення ________.
51918, м. Кам’янське,
вул. Дніпробудівська, 2.

You might also like