Android utilise Java et Kotlin pour définir respectivement les polices tierces, les polices globales APP et les paramètres de police Android X pour Textview

avant-propos

Cet article présente Android pour implémenter des polices personnalisées à paramètres globaux et des polices personnalisées à paramètres locaux, c'est-à-dire définir des polices pour un seul TextView. En même temps, il fournit également d'excellents cadres de polices tripartites, qui peuvent essentiellement répondre à toutes les exigences des développeurs pour paramètres de police.


Effets avant et après l'utilisation de polices personnaliséesinsérez la description de l'image ici

1. Que sont les actifs ?

Tout d'abord, il faut bien comprendre les atouts d'Android , bref, vos photos et fichiers svg sont placés sous res/drawabe du projet, et les fichiers de police utilisés pour définir la police sont situés sous assets. Comment créer un répertoire d'actifs, cliquez pour entrer

2. Police globale APP

2.1. Importer une bibliothèque

Le code est le suivant (exemple) :

// Utilisé pour définir l' 
implémentation globale de la police de l'application 'uk.co.chrisjenx:calligraphy:2.2.0'

2.2. Initialiser la calligraphie dans l'application

Le code est le suivant (exemple) :

public class MyApplication étend Application { 
    @Override 
    public void onCreate() { 
        super.onCreate(); 
        exemple = ceci ; 
        //app字体
        CalligraphyConfig.initDefault( 
                new CalligraphyConfig.Builder() 
                        .setDefaultFontPath("fonts/OpenSans-Regular.ttf") 
                        .setFontAttrId(R.attr.fontPath) 
                        .build() 
        ); 
    ​}
 
    public static LightMeterApplication getInstance() { 
        retourne l'instance ; 
    } 
}

Configurez une MyApplication personnalisée dans AndroidManifest.xml pour remplacer l'application par défaut

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

Ci-dessous mon répertoire de polices

insérez la description de l'image ici

Téléchargez la police, cliquez pour entrer le code d'extraction : 2555 Vous pouvez également importer la police fournie avec Windows, le chemin de la police : C:\Windows\Fonts My Win10 est livré avec 263 fichiers de police, ce qui suit est une capture d'écran du fichier de police

Police de caractère

2.3. Laisser l'activité spécifiée configurer les polices personnalisées

remplacer attachBaseContext

2.3.1 Paramètres Java

    // L'activité qui n'est pas réécrite est toujours la police par défaut d'Android 
    @Override 
    protected void attachBaseContext(Context newBase) { 
        super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
    }

2.3.2 paramètres kotlin

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

2.4 Erreur d'environnement de développement Android Q et Android X

Si votre projet met à niveau l'environnement AndroidX et débogue sur Android Q, l'erreur suivante sera signalée


    E/AndroidRuntime : EXCEPTION FATAL : processus principal : com.bigcat.edulearnaid, PID : 21204 
    java.lang.RuntimeException : impossible de démarrer l'activité ComponentInfo{com.bigcat.edulearnaid/com.bigcat.edulearnaid.ui.StartActivity} : android. view.InflateException : ligne de fichier XML binaire n° 17 dans com.bigcat.edulearnaid : layout/abc_screen_simple : ligne de fichier XML binaire n° 17 dans com.bigcat.edulearnaid : layout/abc_screen_simple : erreur de gonflage de la classe androidx.appcompat.widget.FitWindowsLinearLayout 
        sur Android .app.ActivityThread.performLaunchActivity(ActivityThread.java:3895)

Résolution :

Ajoutez les dépendances suivantes dans le projet build.gradle pour remplacer uk.co.chrisjenx:calligraphy:2.2.0

implémentation 'io.github.inflationx:calligraphy3:3.1.1' 
implémentation 'io.github.inflationx:viewpump:2.0.3'

Initialiser dans onCreate() de l'application :

2.4.1 paramètres java

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

2.4.2 Paramètres 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 Utiliser le thème pour modifier la police globale

Dans l'application, android:themeconfigurez un thème d'application via . Généralement, les projets nouvellement créés sont @style/AppTheme. Ajoutez-y les propriétés de la police android:fontFamilyet cela peut compléter le réglage global d'une police système.

77e134250ffbee8855a9fd6677ca6217

3. Définir la police d' un seul TextView

Contrairement à la définition de la police globale, il n'est pas nécessaire de configurer l'application, pas besoin d'introduire la calligraphie de la bibliothèque dépendante et le chemin de la police doit encore être configuré. Utilisez la méthode suivante pour terminer le paramétrage de la police

3.1 Implémentation avec Typeface + .ttf

3.1.1 Java

Typeface protégée tfRegular;//Définir la police 
{ 
    tfRegular = Typeface.createFromAsset(getActivity().getAssets(), "fonts/OpenSans-Regular.ttf");//Initialiser la police 
    textView.setTypeface(tfRegular); 
}

3.1.2 kotline

protected var tfRegular : Typeface ? = null // définit la police 
    get() = field ?: Typeface.createFromAsset(requireActivity().assets, "fonts/OpenSans-Regular.ttf") // initialise la police 
textView.typeface
= tfRegular / / définir la police

3.2 Utiliser les propres polices du SDK

noraml (police commune, la police utilisée par défaut par le système) sans (police sans serif) serif (police serif) monospace (police à espacement fixe)

3.2.1 Implémentation via 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" font augmenter l'espacement --> 
    <! - - android:typeface="serif" Définir la propre police du SDK -->

3.2.2 Implémentation via le code logique Java

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

3.2.3 Implémentation via le code logique 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 Utiliser RoBoto pour définir la police en xml

Les polices qui peuvent être personnalisées via XML incluent également Roboto. Après Android 4.0, Roboto est utilisé comme police par défaut. Si vous voulez en savoir plus sur Robote, vous pouvez le vérifier sur le site Web de Google . Voici comment l'utiliser :

3.3.1 Utiliser android:fontFamily en xml

android:fontFamily="sans-serif" // roboto regular   
android:fontFamily="sans-serif-light" // roboto light   
android:fontFamily="sans-serif-condensed" // roboto condensé   
android:fontFamily="sans- serif-thin" // roboto thin (android 4.2)   
//en combinaison avec   
android:textStyle="normal|bold|italic"

Les polices normale et sans sont en fait les mêmes, serif est une police serif et nonospace est une police à chasse fixe.

serif ajoute des empattements à la police par défaut. Et nonospace limite la largeur de chaque caractère, de sorte qu'ils obtiennent un effet de largeur égale.

7daad603fc351616025e805bf7038ef5

3.3.2 Attribut du paramètre fontFamily

Police de caractère caractéristiques des attributs
Régulier police standard
Italique police italique
Audacieux caractère gras
Gras italique gras et italique
Lumière police sans empattement
Léger italique italique sans empattement
Mince beau corps
Italique fin italique fin
Condensé régulier Utilisé pour la décoration de texte, l'affichage d'informations, la conception de sites Web, la découpe de sceaux et la fabrication de moules[cr]
Italique condensé version italique cr
Gras condensé cr gras
Gras-italique condensé version italique gras cr

3.3.3 fontFamily charge les polices sous le paquet de ressources de police

1. Mettez la police téléchargée dans le fichier suivant

image

2. Référence en xml

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fontFamily="@font/anyeguihuapiaoxiang" 
    android:text="Définir la police d'un seul TextView - via le fichier de ressources de police" />

A noter que si typefaceet sont configurés en même temps, la police configurée fontFamilysera utilisée .fontFamily

3.4 style de texte

textStyleIl est principalement utilisé pour définir le style de certaines polices et il est valable pour toutes les polices. C'est-à-dire que même si vous remplacez la police, vous pouvez toujours utiliser textStylepour modifier son style. Il existe des options facultatives prises en charge par textStyle lui-même normal|bold|italic, et elles sont également très faciles à comprendre, c'est-à-dire 普通|粗体|斜体.

3.4.1 Utilisation en xml

<TextView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Set the font-textStyle of a single TextView" 
    android:textStyle="bold|italic" />

3.5 Andorid 8.0+ définit et utilise les polices dans les ressources

1. Cliquez avec le bouton droit sur le dossier res et accédez à Nouveau> Répertoire de ressources Android. La fenêtre Nouveau répertoire de ressources s'affiche.

2. Dans la liste Type de ressource, sélectionnez une police et cliquez sur OK.

3. Ajoutez le fichier de polices au dossier de polices.

4. Double-cliquez sur le fichier de police pour prévisualiser la police du fichier dans l'éditeur.

Ces quatre étapes consistent à créer un fichier de ressources de police et à placer la police téléchargée dans le fichier

3.5.1 Création de polices

1. Faites un clic droit sur le dossier de polices et allez dans "Nouveau" > "Fichier de ressources de polices". La fenêtre Nouveau fichier de ressources s'affiche.

2. Entrez un nom de fichier et cliquez sur OK. Une nouvelle ressource de police XML s'ouvrira dans l'éditeur.

3. Encapsulez chaque fichier de police, style et attribut de poids dans un élément <font>. Le XML suivant illustre l'ajout d'attributs liés à la police dans le XML de la ressource de police :

<?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" /> 
< /font-family>

3.5.2 Utilisation dans TextView

Dans le fichier XML de mise en page, définissez l'attribut fontFamily sur le fichier de police auquel vous souhaitez accéder.

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

3.5.3 Appel dynamique

Police de caractères police de caractères = ResourcesCompat.getFont(context, R.font.lobster);

Plus

4. Excellent cadre de fonction de police personnalisé

4.1 Définition des styles de texte via Spannables

659-

4.2 Rendre les mots-clés cliquables souligner TextView

UnderLineLinkTextView ★327 -

4.3 Taille de la police de zoom avec des gestes

PincezZoomTextView ★272 -

4.4 Code couleur de certaines phrases

CouleurTextView ★214 -

5. Référence

Référence 1

Référence 2

Je suppose que tu aimes

Origine blog.csdn.net/fromVillageCoolBoy/article/details/131780995
conseillé
Classement