Промальовування тексту – РОЗРОБКА ІГОР ДЛЯ ОС ANDROID

Хоча текст, що виводиться в грі Містер Ном, буде намальований від руки, дуже корисно буде дізнатися, як виводити текст за допомогою шрифтів TrueType Почнемо з завантаження власного TrueType-шрифта з папки assets /

Завантаження шрифтів Android API пропонує клас Typeface, призначений для зберігання TrueType Клас надає простий статичний метод для завантаження файлу шрифту з каталогу assets /:

Що цікаво, даний метод не генерує особливого винятку, якщо файл шрифту не був з якихось причин завантажений Замість цього спрацьовує виняток RuntimeException Чому для даного методу не було описано конкретного винятку – для мене загадка

Малювання тексту за допомогою шрифту Тепер у нас є власний шрифт, і ми визначаємо його як Typeface нашого екземпляра Paint

За допомогою Paint ми також визначаємо розмір шрифту:

Документація по цьому методу страждає лаконічністю – вона, наприклад, не повідомляє, в яких одиницях задається розмір шрифту (в точках або пікселах) Ми приймемо за істину другий варіант

Тепер ми можемо вивести текст з використанням потрібного нам шрифту за допомогою наступного методу класу Canvas:

Перший параметр – текст, який необхідно вивести Наступні два аргументи – координати місця, де це має статися Останній аргумент добре нам знайомий: це екземпляр Pai nt, що визначає колір, шрифт і розмір тексту Встановивши для Paint свій колір, ми також можемо розфарбувати наш текст

Вирівнювання і межі тексту Ви може запитати, як координати з попереднього методу співвідносяться з прямокутником, в який поміщається текст Чи визначають вони лівий верхній кут цього прямокутника Відповідь не так простий, як може здатися Примірник Paint має атрибут, названий align setting Він може бути встановлений за допомогою методу класу Paint:

Перерахування PaintAlign має три варіанти значення: PaintAlignLEFT, Paint Align CENTER і Paint Align RIGHT Залежно від встановленого вирівнювання інтерпретуються координати, передаються методу Canvas drawText, як лівий верхній кут прямокутника, верхній центральний піксель прямокутника або ж його правий верхній кут Значення вирівнювання за замовчуванням – Pai nt Al i gn LEFT

Іноді також корисно знати межі певної рядки, виражені в пікселах Для цього клас Pai nt також пропонує наступний метод:

Перший параметр – рядок, для якої нам хочеться отримати кордону Наступні два аргументи задають початкову та кінцеву позиції всередині цього рядка, для яких повинні бути виміряні кордону Останній параметр абсолютно особливий – це екземпляр класу Rect, який ми самі визначаємо і передаємо методу Метод запише значення ширини і висоти би прямокутника в поля Rect right і Rect bottom Для впевненості ми можемо викликати методи RectwidthO і Rect height О, щоб отримати ті ж значення Зверніть увагу – всі ці методи працюють тільки для однострочного тексту Якщо ми хочемо вивести багатостроковий текст, нам доведеться компонувати його самостійно

Всі разом

Досить розмов – пора і запрограмувати небудь Лістинг 415 показує рендеринг тексту в дії

Лістинг 415 . Активність FontTest package combadlogi сandroi dgames

Ми не будемо обговорювати метод onCreate даної активності, оскільки бачили його вже не раз Наша реалізація RenderView включає три члена: Paint, Typeface і Rect (у якому ми пізніше збережемо кордону нашої тексту)

У конструкторі створюємо новий екземпляр Paint і завантажуємо шрифт з файлу fontttf з каталогу assets /

У методі onDraw встановлюємо для Paint жовтий колір, шрифт і розмір тексту, а також визначаємо вирівнювання тексту (яке буде використано для інтерпретації координат при виклику Canvas DrawText) У підсумку виклик методу Canvas drawText призведе до появи рядка This is a test, центрованої горизонтально з координатою 100 по осі у

Для другого виклику процедури малювання тексту ми дещо змінимо: нам потрібен вирівняний по правому краю текст, розташований біля правого краю дисплея Ми могли б зробити це, використовуючи Paint Align RIGHT і координату xравной Canvas getWidthC) – 1 Замість цього ми ускладнюємо завдання (і заодно практикуємо в компонуванні простого тексту) – застосуємо межі тексту Попутно змінимо колір і розмір тексту На рис 415 показаний висновок даної активності

Рис 415 Варіації тексту (дозвіл 480 х 800)

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

ПРИМІТКА

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

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*