1. Code
  2. Mobile Development
  3. Android Development

Совет: Работаем со своими шрифтами в Android O

Scroll to top
This post is part of a series called Quick Tips: New UI Features in Android O.
Quick Tip: Create Autosizing Text With Android O
Quick Tip: Introducing Android O’s Adaptive Icons and Pinned Shortcuts

Russian (Pусский) translation by Ellen Nelson (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.
Create a resfont folder in Android StudioCreate a resfont folder in Android StudioCreate a resfont folder in Android Studio
  • Переместите файлы вашего шрифта в новую папку 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"/>
Test your custom font on your Android O AVD Test your custom font on your Android O AVD Test your custom font on your Android O AVD

Вы можете добавить пользовательский шрифт к любым стилям, которые вы создали в приложении.

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!