Agora você pode usar sobreposições de recursos no ambiente de execução (RROs, na sigla em inglês) para mudar fontes. Ao adicionar a personalização fontes para criar um pacote de fontes, pode usar fontes em temas e usar RROs para aplicar a personalizações.
Conclua estas tarefas:
- Criar um pacote de fontes
- Criar um pacote de sobreposição de dispositivos
- Usar a família de fontes do sistema adicionada
Uma amostra de estrutura de arquivo e arquivos de amostra são fornecidos em custom-fonts.zip. Faça o download e extraia o arquivo localmente para usar.
Criar um pacote de fontes
Para criar um pacote de fontes:
- Adicione todos os arquivos
ttf
de fontes ao pacote de fontes navendor
. Exemplo:vendor/[oem]/fonts/[oem]-sans/
- Crie o arquivo
Android.mk
para o pacote de fontes. Exemplo:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- Confirme se o módulo será instalado na partição
product
naetc
. Para fazer isso, verifique se o módulo tem as seguintes flags:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
O exemplo de código fornecido acima ilustra uma definição completa de um módulo de pacote de fontes.
- Crie um arquivo com o nome
fonts.mk
para o pacote de fontes e adicione a fontettf
arquivos paraPRODUCT_PACKAGES
. Exemplo:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
Exemplo:
PRODUCT_PACKAGES := \ [font name].ttf \
Criar um pacote de sobreposição de dispositivos
- Crie um módulo com o nome
fonts_customization.xml
para ser adicionado ao build. Este módulo aponta para o arquivofonts_customization.xml
que contém a fonte e chama os arquivos make de todos os pacotes de fontes. Exemplo:vendor/[oem]/[device]_overlay/fonts/Android.mk
- Crie as famílias de fontes:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
O nível raiz do arquivo precisa ser uma tag
fonts-modification
. Adicionar famílias de fontes para cada um dos pacotes de fontes nesse elemento. Além disso, adicionecustomizationType="new-named-family"
para cada família de fontes, e que cada um tenha um atributoname
. Esse nome será usado posteriormente para acessar o família de fontes. Esse arquivo precisa ser adicionado afonts_customizations.xml
definido anteriormente emAndroid.mk
.A amostra fornecida acima contém um arquivo
fonts_customization.xml
válido. - Criar
fonts.mk
. Exemplo:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- Adicione
fonts_customization.xml
na sinalizaçãoPRODUCT_PACKAGES
. - Chame cada um dos pacotes de fontes criados anteriormente.
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- Adicione o módulo de fonte ao build em
PRODUCT_PACKAGES
e recrie-o. As fontes serão instaladas no sistema. - Verifique se os arquivos de fontes
ttf
estão no/product/fonts
no dispositivo. - Verifique se
fonts_customization.xml
está em/product/etc/
no dispositivo.
Usar a nova família de fontes do sistema
Para usar a nova família de fontes do sistema:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>