O Android usa Java e Kotlin para definir fontes de terceiros, fontes globais do APP e configurações de fonte do Android X para Textview, respectivamente

prefácio

Este artigo apresenta o Android para implementar fontes personalizadas de configuração global e fontes personalizadas de configuração local, ou seja, definir fontes para um único TextView. Ao mesmo tempo, também fornece algumas excelentes estruturas de fontes tripartidas, que podem basicamente atender a todos os requisitos de desenvolvedores para configurações de fonte.


Efeitos antes e depois de usar fontes personalizadasinsira a descrição da imagem aqui

1. O que são ativos?

Em primeiro lugar, você precisa entender os ativos do Android .Resumindo, suas imagens e arquivos SVG são colocados em res/drawabe do projeto, e os arquivos de fonte usados ​​para definir a fonte estão localizados em ativos. Como criar um diretório de ativos, clique para entrar

2. Fonte global do APP

2.1. Biblioteca de importação

O código é o seguinte (exemplo):

//Usado para definir a 
implementação da fonte global do aplicativo 'uk.co.chrisjenx:caligrafia:2.2.0'

2.2. Inicializar a caligrafia no aplicativo

O código é o seguinte (exemplo):

public class MyApplication extends Application { 
    @Override 
    public void onCreate() { 
        super.onCreate(); 
        instância = isso; 
        //app字体
        CalligraphyConfig.initDefault( 
                new CalligraphyConfig.Builder() 
                        .setDefaultFontPath("fonts/OpenSans-Regular.ttf") 
                        .setFontAttrId(R.attr.fontPath) 
                        .build() 
        ); 
    ​}
 
    public static LightMeterApplication getInstance() { 
        retornar instância; 
    } 
}

Configure um MyApplication personalizado em AndroidManifest.xml para substituir o aplicativo padrão

    <application 
        android:name=".MyApplication" 
        android:allowBackup="false" 
        android:hardwareAccelerated="true" 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" 
        android:theme="@ estilo/AppTheme">

Abaixo está o meu diretório de fontes

insira a descrição da imagem aqui

Baixe a fonte, clique para inserir o código de extração: 2555 Você também pode importar a fonte que vem com o Windows, o caminho da fonte: C:\Windows\Fonts Meu Win10 vem com 263 arquivos de fonte, a seguir é uma captura de tela do arquivo de fonte

A fonte

2.3. Permitir que a atividade especificada configure fontes personalizadas

substituir attachBaseContext

2.3.1 Configurações do Java

    //A atividade que não foi reescrita ainda é a fonte padrão do Android 
    @Override 
    protected void attachBaseContext(Context newBase) { 
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
    }

2.3.2 configurações do kotlin

override fun attachBaseContext(newBase: Context) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)) 
}

2.4 Erro de ambiente de desenvolvimento Android Q e Android X

Se o seu projeto atualizar o ambiente AndroidX e depurar no Android Q, o seguinte erro será relatado

E/AndroidRuntime: EXCEÇÃO FATAL: processo principal 
    : com.bigcat.edulearnaid, PID: 21204 
    java.lang.RuntimeException: não é possível iniciar a atividade ComponentInfo{com.bigcat.edulearnaid/com.bigcat.edulearnaid.ui.StartActivity}: android. view.InflateException: Linha de arquivo XML binário nº 17 em com.bigcat.edulearnaid:layout/abc_screen_simple: Linha de arquivo XML binário nº 17 em com.bigcat.edulearnaid:layout/abc_screen_simple: Erro ao inflar a classe androidx.appcompat.widget.FitWindowsLinearLayout no 
        android .app.ActivityThread.performLaunchActivity(ActivityThread.java:3895)

Solução :

Adicione as seguintes dependências no projeto build.gradle para substituir uk.co.chrisjenx:calligraphy:2.2.0

implementação 'io.github.inflationx:calligraphy3:3.1.1' 
implementação 'io.github.inflationx:viewpump:2.0.3'

Inicialize no onCreate() do aplicativo:

2.4.1 configurações de java

ViewPump.init(ViewPump.builder() 
            .addInterceptor(new CalligraphyInterceptor( 
                new CalligraphyConfig.Builder() 
                    .setDefaultFontPath("你的字体") 
                    .setFontAttrId(R.attr.fontPath) 
                    .build())) 
                .build()) ;

2.4.2 Configurações do Kotlin

ViewPump.init( 
    ViewPump.builder() 
        .addInterceptor( 
            CalligraphyInterceptor( 
                CalligraphyConfig.Builder() 
                    .setDefaultFontPath("你的字体") 
                    .setFontAttrId(R.attr.fontPath) 
                    .build() 
            ) 
        .build( 
) 
        )

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)); 
}

2.5 Use o tema para modificar a fonte global

No aplicativo, android:themeconfigure um tema de aplicativo por meio de . Geralmente, os projetos recém-criados são arquivos @style/AppTheme. Adicione as propriedades sobre a fonte nele android:fontFamilye pode concluir a configuração global de uma fonte do sistema.

77e134250ffbee8855a9fd6677ca6217

3. Defina a fonte de um único TextView

Ao contrário da configuração de fontes globais, não há necessidade de configurar o aplicativo, não há necessidade de introduzir a caligrafia da biblioteca dependente e ainda precisa configurar o caminho da fonte, use o seguinte método para concluir a configuração da fonte

3.1 Implementação usando Typeface + .ttf

3.1.1 java

Tipo de letra protegido tfRegular;//Definir fonte 
{ 
    tfRegular = Typeface.createFromAsset(getActivity().getAssets(), "fonts/OpenSans-Regular.ttf");//Inicializar fonte 
    textView.setTypeface(tfRegular); 
}

3.1.2 kotlin

protected var tfRegular: Typeface? = null // define a fonte 
    get() = field ?: Typeface.createFromAsset(requireActivity().assets, "fonts/OpenSans-Regular.ttf") // inicializa a fonte textView.typeface 
=
tfRegular / / definir fonte

3.2 Use fontes próprias do SDK

noraml (fonte comum, a fonte usada pelo sistema por padrão) sans (fonte sem serifa) serif (fonte com serifa) monospace (fonte monoespaçada)

3.2.1 Implementação através de xml

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="580.6Ix" 
    android:gravity="center" 
    android:textStyle="bold"    
    android:textSize="20sp" 
    android:typeface=" serif" 
    android:textColor="@color/white"/> 
    <!-- android:textStyle="bold" font bold --> 
    <!-- android:letterSpacing="0.2" fonte aumentar espaçamento --> 
    <! - - android:typeface="serif" Defina a própria fonte do SDK -->

3.2.2 Implementação através de código lógico Java

    vSansText = (TextView) findViewById(R.id.sans); 
    vSerifText = (TextView) findViewById(R.id.serif); 
    vMonospaceText = (TextView) findViewById(R.id.monospace); 
 
    //Configuração do arquivo 
    vSansText.setTypeface(Typeface.SANS_SERIF); 
    vSerifText.setTypeface(Typeface.SERIF); 
    vMonospaceText.setTypeface(Typeface.MONOSPACE);

3.2.3 Implementação através do código lógico kotlin

vSansText = findViewById(R.id.sans) 
vSerifText = findViewById(R.id.serif) 
vMonospaceText = findViewById(R.id.monospace) 
​//
设置字体样式
vSansText.typeface = Typeface.SANS_SERIF 
vSerifText.typeface = Typeface.SERIF 
vMonospaceText.typeface = Typeface.MONOSPACE

3.3 Use o RoBoto para definir fonte em xml

As fontes que podem ser personalizadas por meio de xml incluem Roboto. Depois do Android 4.0, Roboto é usado como fonte padrão. Se você quiser saber mais sobre Robote, pode acessar o site do Google para visualizá- lo . Veja como usá-lo:

3.3.1 Use android:fontFamily em xml

android:fontFamily="sans-serif" // robô normal   
android:fontFamily="sans-serif-light" // robô leve   
android:fontFamily="sans-serif-condensed" // robô condensado   
android:fontFamily="sans- serif-thin" // roboto thin (android 4.2)   
// em combinação com   
android:textStyle="normal|bold|italic"

As fontes normal e sans são na verdade as mesmas, serif é uma fonte serif e nonospace é uma fonte monoespaçada.

serif adiciona serifas à fonte padrão. E o não-espaço limita a largura de cada caractere, para que eles alcancem um efeito de largura igual.

7daad603fc351616025e805bf7038ef5

3.3.2 atributo do parâmetro fontFamily

A fonte características do atributo
Regular fonte padrão
itálico fonte itálico
Audacioso negrito
Negrito itálico negrito e itálico
Luz fonte sem serifa
Itálico claro sem serifa itálico
Afinar corpo fino
Itálico fino itálico fino
Condensado regular Usado para decoração de texto, exibição de informações, web design, corte de selos e fabricação de moldes[cr]
Itálico condensado versão em itálico cr
negrito condensado negrito cr
negrito-itálico condensado versão negrito itálico cr

3.3.3 fontFamily carrega as fontes no pacote de recursos de fonte

1. Coloque a fonte baixada no seguinte arquivo

img

2. Referência em xml

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fontFamily="@font/anyeguihuapiaoxiang" 
    android:text="Definir a fonte de um único TextView - através do arquivo de recurso de fonte" />

Deve-se observar que se typefacee for configurado ao mesmo tempo, a fonte configurada fontFamilyserá usada .fontFamily

3.4 estilo de texto

textStyleÉ usado principalmente para definir o estilo de algumas fontes e é válido para todas as fontes. Ou seja, mesmo se você substituir a fonte, ainda poderá usar textStylepara modificar seu estilo. Existem opções opcionais suportadas pelo próprio textStyle normal|bold|italic, e também são muito fáceis de entender, ou seja 普通|粗体|斜体.

3.4.1 Uso em xml

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Definir o font-textStyle de um único TextView" 
    android:textStyle="bold|italic" />

3.5 Andorid 8.0+ define e usa fontes em recursos

1. Clique com o botão direito na pasta res e vá para Novo > Android Resource Directory. A janela Novo diretório de recursos é exibida.

2. Na lista Tipo de recurso, selecione uma fonte e clique em OK.

3. Adicione o arquivo de fonte à pasta de fontes.

4. Clique duas vezes no arquivo de fonte para visualizar a fonte do arquivo no editor.

Essas quatro etapas são para criar um arquivo de recurso de fonte e colocar a fonte baixada no arquivo

3.5.1 Criando fontes

1. Clique com o botão direito do mouse na pasta da fonte e vá para "Novo" > "Arquivo de recurso de fonte". A janela Novo arquivo de recurso é exibida.

2. Insira um nome de arquivo e clique em OK. Um novo XML de recurso de fonte será aberto no editor.

3. Encapsule cada arquivo de fonte, estilo e atributo de peso em um elemento <font>. O XML a seguir ilustra a adição de atributos relacionados à fonte no XML do recurso de fonte:

<?xml version="1.0" encoding="utf-8"?> 
<font-family xmlns:android="http://schemas.android.com/apk/res/android"> 
    <font 
        android:fontStyle=" normal" 
        android:fontWeight="400" 
        android:font="@font/lobster_regular" /> 
    <font 
        android:fontStyle="italic" 
        android:fontWeight="400" 
        android:font="@font/lobster_italic" /> 
< /família de fontes>

3.5.2 Uso em TextView

No arquivo XML de layout, defina o atributo fontFamily para o arquivo de fonte que você deseja acessar.

    <TextView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:fontFamily="@font/lobster"/>

3.5.3 Chamada dinâmica

Typeface typeface = ResourcesCompat.getFont(context, R.font.lobster);

Mais

4. Excelente estrutura de função de fonte personalizada

4.1 Definindo estilos de texto por meio de Spannables

659-

4.2 Tornar palavras-chave clicáveis ​​sublinhadas TextView

UnderLineLinkTextView ★327 -

4.3 Aumentar o tamanho da fonte com gestos

PinchZoomTextView ★272 -

4.4 Codificar algumas frases com cores

ColorTextView ★214 -

5. Referência

Referência 1

Referência 2

Acho que você gosta

Origin blog.csdn.net/fromVillageCoolBoy/article/details/131780995
Recomendado
Clasificación