Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаборторна робота №2.doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

Додавання ресурсів в проект

Наступним кроком стане включення графічних файлів в ресурси додатка GeoQuiz.

На панелі Package Explorer відкрийте вміст каталогу res і знайдіть три підкаталоги, імена яких відповідають іменам з файлу рішень.

Скопіюйте файли з кожного каталогу у відповідний каталог Package Explorer.

Мал. 2.7. Зображення стрілок в каталогах drawable проекту GeoQuiz

Якщо ви перетягуватимете файли мишею, на екрані з'являється вікно, зображене на мал. 2.8. Встановіть перемикач Copy Files, щоб копіювати файли замість створення посилань на них.

Мал. 2.8. Копіювання файлів(замість створення посилань)

Процес включення графіки в додаток надзвичайно простий. Будь-якому файлу .png

.jpg або .gif, доданому в теку res/drawable, автоматично призначається ідентифікатор ресурсу. (Врахуйте, що імена файлів мають бути записані в нижньому регістрі і не можуть містити пропусків.)

Після того, як файли будуть скопійовані, відкрийте файл gen/R.java і знайдіть нові ідентифікатори ресурсів у внутрішньому класі R.drawable. Таких ідентифікаторів всього два: R.drawable.arrow _ left і R.drawable.arrow _ right.

Ці ідентифікатори ресурсів не уточнюються щільністю пікселів, так що вам не треба визначати щільність пікселів екрану під час виконання; просто використайте ідентифікатор ресурсу в коде. При запуску додатка ОС визначить зображення, відповідне для конкретного пристрою.

Посилання на ресурси в xml

Для посилань на ресурси в коде використовуються ідентифікатори ресурсів. Але ми хочемо настроїти кнопку Next так, щоб у визначенні макету відображалася стрілка. Як включити посилання на ресурс в розмітку XML?

Та майже так само, тільки з трохи зміненим синтаксисом. Відкрийте файл activity _ quiz.xml і додайте два атрибути у визначення віджета Button.

Лістинг 2.12. Включення графіки в кнопку Next(activity _ quiz.xml)

<LinearLayout

... >

...

<LinearLayout

... >

...

</LinearLayout>

<Button android: id="@+id/next _ button"

У ресурсах XML ви посилаєтеся на інший ресурс за його типом і ім'ям. Посилання на рядок розпочинається з префікса @string/. Посилання на графічний ресурс розпочинається з префікса @drawable/.

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

Втім, в програмі GeoQuiz ховається помилка. Під час виконання GeoQuiz натисніть кнопку Next, щоб перейти до наступного питання, а потім поверніть пристрій. (Якщо програма виконується в емуляторі, натисніть Control+F12/

Ctrl+F12.)

Після повороту ми знову бачимо перше питання. Чому це сталося і як виправити помилку?

Щоб уникнути випадкового ушкодження поточного проекту, ми рекомендуємо створити копію в Eclipse і практикуватися на ній.

Клацніть правою кнопкою миші на проекті в Package Explorer, виберіть команду Copy, потім знову клацніть правою кнопкою миші і вставте скопійований проект.

Вам буде запропоновано ввести ім'я нового проекту, який з'являється на панелі Package Explorer готовим до роботи.

Завдання. Додавання слухача для TextView

Кнопка Next зручна, але було б непогано зробити так, щоб користувач міг перей ти до наступного питання простим натисненням на віджете TextView.

Підказка. Для TextView можна використати слухача View.OnClickListener, який використовувався з Button, тому що клас TextView також являється похідним від View.

Завдання. Додавання кнопки повернення

Додайте кнопку для повернення до попереднього питання. Призначений для користувача інтерфейс повинен виглядати приблизно так, як показано на мал. 2.9.

Мал. 2.9. Тепер з кнопкою повернення!

Ця дуже корисна вправа. У нім вам доведеться згадати багато що з того, про що говорилося в двох останніх главах.

Завдання. Від Button до ImageButton

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

Мал. 2.10. Кнопки тільки зі значками

Для цього обоє віджета повинні відноситися до типу ImageButton (замість звичайного

Button).

Віджет ImageButton являється похідним від ImageView — на відміну від віджета Button, похідного від TextView.

спадкоємство спадкоємство

спадкоємство спадкоємство

Мал. 2.11. Діаграма спадкоємства ImageButton і Button

Атрибути text і drawable кнопки Next можна замінити одним атрибутом ImageView :

<Button ImageButton android: id="@+id/next _ button"

Звичайно, вам також доведеться внести зміни в QuizActivity, щоб цей клас працював з ImageButton.

Після того, як ви заміните кнопки кнопками ImageButton, Eclipse видасть попередження про відсутність атрибуту android:contentDescription. Цей атрибут забезпечує доступність контенту для читачів з ослабленим зором. Рядок, заданий цьому атрибуту, читається екранним диктором(при включенні відповідних налаштувань в системі користувача).

Нарешті, додайте атрибут android:contentDescription в кожен елемент Image - Button.