Совет: Работаем со своими шрифтами в Android O
() translation by (you can also view the original English article)
А вот и первая предварительная версия Android O!
В этой серии мы рассмотрим некоторые из современных функций пользовательского интерфейса, с которыми вы можете начать экспериментировать сегодня, в версии Android O для предварительного ознакомления разработчиками.
В первом совете я показал вам, как настроить свою разработку для поддержки этого раннего предварительного просмотра O, и как создать текст, который автоматически масштабируется в соответствии с текущей конфигурацией экрана. В этом совете мы увидим, как Android O сделает работу с пользовательскими шрифтами беззаботной.
Добавление ваших шрифтов в проект
Вы когда-нибудь хотели выделить отдельный фрагмент текста? Или, может быть, вы были убеждены, что ваш шрифт станет отличным способом добавить в ваше приложение дополнительную индивидуальность?
Хотя есть много преимуществ при использовании пользовательских шрифтов, работа с ними на Android традиционно была болезненным опытом, требуя, чтобы вы либо использовали библиотеку, либо создали пользовательский View
.
К счастью, работа с пользовательскими шрифтами в Android будет намного проще, так как пользовательские шрифты станут полностью поддерживаемым типом ресурсов в Android O. Это означает, что добавление пользовательского шрифта в ваше приложение будет таким же простым, как добавление любого другого ресурса, например изображения и текста.
Чтобы следовать этому руководству, вам понадобятся несколько файлов шрифтов, которые вы можете добавить в проект с Android O, который мы создали в первой части.
Android O поддерживает оба формата: .otf (OpenType) и .ttf (TrueType). Существует множество веб-сайтов, предлагающих такие шрифты бесплатно, поэтому потратьте несколько минут на поиск в Google, пока не найдете нужный шрифт.
Поскольку мы просто экспериментируем с новыми функциями Android O, не имеет особого значения, какой шрифт вы используете, но если вы ищете шрифты для использования в релизах вашего приложения, вы всегда должны смотреть условия использования этого шрифта. Только потому, что файл доступен для загрузки, не означает автоматически, что нет ограничений на то, как вы можете использовать и обращаться с этим файлом, поэтому всегда читайте мелкий текст!
Вы также должны задуматься о цели, содержании и целевой аудитории вашего приложения, так как разные шрифты передают разные сообщения. Если вы разрабатываете приложение, помогающее людям заполнять их налоговые декларации, то ваша аудитория с трудом сможет серьезно отнестись к финансовым и юридическим советам в вашем приложении, если оно поставляется со непонятным и странным шрифтом!
Как только вы найдете шрифт, с которым хотите работать, загрузите и разархивируйте его. На этом этапе вы должны проверить имя файла шрифта на наличие недопустимых символов — по сути это, что угодно, что не входит в строчные a-z, 0-9 или символ подчеркивания. Попробуйте использовать любые другие символы и Android Studio выдаст ошибку, как только вы попытаетесь сослаться на этот ресурс.
Так как у вас есть файл(ы) шрифтов, вам надо будет где-то их хранить:
- Правый клик по папке app/res вашего проекта и выберите New > Android resource directory.
- Откройте выпадающее меню и выберите font.
- Введите font в File name.
- Нажмите OK.



Переместите файлы вашего шрифта в новую папку res/font.
Использование своих шрифтов
Вы можете применить свой шрифт к тексту, используя новый XML атрибут android:fontFamily
:
1 |
<TextView
|
2 |
android:text="This is some text" |
3 |
android:layout_width="wrap_content" |
4 |
android:layout_height="wrap_content" |
5 |
android:fontFamily="@font/doublefeature"/> |



Вы можете добавить пользовательский шрифт к любым стилям, которые вы создали в приложении.
1 |
<style name=“headlineFont" parent="@android:style/TextAppearance.Small"> |
2 |
<item name="android:fontFamily">@font/doublefeature</item> |
3 |
</style>
|
Если вы хотите использовать свой шрифт программно, когда вы можете извлечь ваш шрифт используя метод getFont(int)
, например:
1 |
import android.support.v7.app.AppCompatActivity; |
2 |
import android.os.Bundle; |
3 |
import android.widget.LinearLayout; |
4 |
import android.widget.TextView; |
5 |
import android.widget.LinearLayout.LayoutParams; |
6 |
import android.graphics.Typeface; |
7 |
|
8 |
public class MainActivity extends AppCompatActivity { |
9 |
|
10 |
@Override
|
11 |
protected void onCreate(Bundle savedInstanceState) { |
12 |
super.onCreate(savedInstanceState); |
13 |
LinearLayout linearLayout = new LinearLayout(this); |
14 |
TextView ProgrammaticallyTextView = new TextView(this); |
15 |
ProgrammaticallyTextView.setText("This is some text"); |
16 |
|
17 |
//Reference your custom font//
|
18 |
|
19 |
Typeface typeface = getResources().getFont(R.font.doublefeature); |
20 |
ProgrammaticallyTextView.setTypeface(typeface); |
21 |
linearLayout.addView(ProgrammaticallyTextView); |
22 |
|
23 |
this.setContentView(linearLayout, new LinearLayout.LayoutParams( |
24 |
LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); |
25 |
}
|
26 |
|
27 |
}
|
Создание семейства шрифта
Иногда при распаковке папки со шрифтом вы можете обнаружить несколько версий одного и того же шрифта, например, курсивную версию, или шрифты с различной толщиной.
Если вы используете несколько версий одного и того же шрифта, вы можете сгруппировать их вместе в семейство шрифтов. Семейство шрифтов по существу является отдельным XML-файлом, в котором вы определяете каждую версию шрифта со всеми связанными с ним атрибутами стиля и веса.
Чтобы создать семейство шрифтов:
- Убедитесь, что вы добавили все файлы шрифта в папку res/font вашего проекта.
- Щелкните правой кнопкой мыши по папке res/font вашего проекта и выберите New > Font resource file.
- Дайте этому файлу имя и нажмите OK.
- Откройте этот XML-файл и определите все различные версии этого шрифта, а также их атрибуты стиля и веса, например:
1 |
<?xml version="1.0" encoding="utf-8"?>
|
2 |
https://schemas.android.com/apk/res/android"> |
3 |
<font
|
4 |
android:fontStyle="normal" |
5 |
android:fontWeight="400" |
6 |
android:font="@font/doublefeature_regular" /> |
7 |
|
8 |
<font
|
9 |
android:fontStyle="italic" |
10 |
android:fontWeight="400" |
11 |
android:font="@font/doublefeature_italic" /> |
12 |
|
13 |
<font
|
14 |
android:fontStyle="bold" |
15 |
android:fontWeight="400" |
16 |
android:font="@font/doublefeature_bold" /> |
17 |
|
18 |
</font-family>
|
Затем вы можете ссылаться на любой из шрифтов в этом семействе, используя атрибут android:fontFamily
. Например:
1 |
android:fontFamily="@font/doublefeature_bold" |
Не забудьте протестировать!
В то время, как легко увлечься новыми функциями, не заходите за рамки пользовательских шрифтов! Согласованные UI легче в навигации и понимании, а если ваше приложение постоянно переключается между шрифтами, тогда ваши пользователи скорее обратят больше внимание на то, как выглядит ваш текст, а не на то, что о чем он говорит.
Если вы добавляете пользовательские шрифты в свой проект, важно проверить, как этот шрифт отображается в широком диапазоне различных конфигураций экрана, поскольку вашим главным приоритетом всегда должна быть удобочитаемость текста.
Заключение
В этом совете я показала вам, как создать более стильный и уникальный текст, добавив пользовательские шрифты в свои проекты. В заключительном посте этой серии мы переведём наш фокус с текста на изображения, так как я покажу вам, как создавать адаптивные значки запуска, которые автоматически адаптируют свою форму в соответствии с текущим устройством.
В то же время ознакомьтесь с некоторыми из наших других руководств по разработке приложений для Android!