Home / Android-Entwicklung / Was ist neu für Text in Android Q?

Was ist neu für Text in Android Q?

Gepostet von Florina Muntenescu Android Developer Advocate

Das Anzeigen von Text ist in den meisten Apps eine wichtige Aufgabe. In Android Q werden daher weiterhin neue Funktionen eingeführt, um Ihre Anforderungen zu unterstützen und die Leistung zu verbessern. Wir haben die Silbentrennung standardmäßig deaktiviert, das Erstellen einer Schriftart mit mehreren Schriftarten oder Schriftfamilien aktiviert, die Liste der auf dem Gerät installierten Schriftarten angezeigt und einige der am häufigsten verwendeten Textstil-APIs verbessert.

Die Silbentrennung ist in Android Q und AppCompat v1.1.0 standardmäßig deaktiviert.

Unsere Leistungstests haben ergeben, dass bei aktivierter Silbentrennung bis zu 70% der für die Textmessung aufgewendeten Zeit auf die Silbentrennung entfällt.

 Tortendiagramm mit der CPU für die Erstellung von StaticLayout: Die Silbentrennung benötigt bis zu 70% der für das Messen von Text aufgewendeten Zeit, 30% anderer Text.

Die Silbentrennung benötigt bis zu 70% der für das Messen von Text aufgewendeten Zeit.

Angesichts dessen Silbentrennung ist häufig nicht für alle TextViews in einer App erforderlich. Aufgrund der Auswirkungen auf die Leistung haben wir beschlossen, die Silbentrennung in Android Q und AppCompat v1.1.0 standardmäßig zu deaktivieren. Wenn Sie die Silbentrennung verwenden möchten, müssen Sie sie in Ihrer App manuell aktivieren, indem Sie die Häufigkeit der Silbentrennung auf normal einstellen. Sie können dies auf verschiedene Arten einstellen:

Als TextAppearance Attribut in styles.xml :


Als TextView-Attribut :


Direkt im Code:

 textView.hyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NORMAL

Weitere Informationen zur Silbentrennung finden Sie in diesem Vortrag auf dem Android Dev Summit 2018.

Verwenden Sie mehrere benutzerdefinierte Schriftarten in derselben Textansicht.

Stellen Sie sich eine Schaltfläche vor, die eine benutzerdefinierte Schriftart (in diesem Beispiel Lato) mit einer Symbolschriftart mischt:

 Secure Checkout-Schaltfläche mit Schlosssymbol, Symbol und lateinischen Schriftarten

Schaltfläche mit Symbol und lateinischen Schriftarten

Die Klasse Button akzeptiert nur eine einzige Instanz einer Schriftart, die für den Text festgelegt werden soll. Vor Android Q können Sie eine -Schriftart mit einer einzigen Schriftfamilie erstellen. Android Q ermöglicht die Erstellung einer Schriftart aus mehreren Schriftfamilien mit einer neuen API, Typeface.CustomFallbackBuilder mit der bis zu 64 Schriftfamilien pro Schriftart erstellt werden können.

Unser Beispiel für eine Symbolschriftart kann folgendermaßen implementiert werden:











 button.typeface = Typeface.CustomFallbackBuilder (
    // füge die lateinische Schrift hinzu
    FontFamily.Builder (
        Font.Builder (Assets, "lato.ttf"). Build ()
    ).bauen()
) .addCustomFallback (
    // Füge die Icon-Schriftart hinzu
    FontFamily.Builder (
        Font.Builder (Assets, "icon_font.ttf"). Build ()
    ).bauen()
).bauen()

Achten Sie beim Erstellen der Schriftfamilie darauf, dass Sie keine Schriftarten, die zu verschiedenen Familien gehören, in dasselbe Schriftfamilienobjekt oder dieselben Stilschriften in dieselbe Schriftfamilie einfügen. Wenn Sie beispielsweise Lato, Kosugi und Material in dieselbe Schriftfamilie einfügen, wird eine ungültige Konfiguration erstellt, ebenso wie wenn Sie zwei fette Schriftarten in dieselbe Schriftfamilie einfügen.

Verwenden Sie die Methode setSystemFallback () um die allgemeine Schriftfamilie (Serife, Sans-Serif oder Monospace) zu definieren, die beim Rendern von Text mit Systemschriftarten verwendet werden soll.






 Typeface.CustomFallbackBuilder (
    FontFamily.Builder (
       ...
    ).bauen()
) .setSystemFallback ("serifenlos")
.bauen()

Aktualisierungen der Textstil-API

Android Q bringt verschiedene Aktualisierungen für verschiedene Textstil-APIs mit:

Verbesserte Unterstützung für variable Schriftarten

TextAppearance unterstützt jetzt das Attribut fontVariationSettings :


Das Attribut fontVariationSettings kann direkt in TextView in Android Q und in AppCompatTextView festgelegt werden:




Verbesserte Spans-APIs

TextAppearanceSpan unterstützt jetzt Schriftarten Schatteneinstellungen FontFeatureSettings und FontVariationSettings .

LineBackgroundSpan und LineHeightSpan haben jetzt Standardimplementierungen: LineBackgroundSpan.Standard und LineHeightSpan.Standard .

Zugreifen auf Systemschriftarten

Mit mehr als 100 von Android unterstützten Sprachen und unterschiedlichen Schriftarten, die unterschiedliche Zeichensätze unterstützen, ist es nicht einfach zu wissen, welche Systemschriftarten ein bestimmtes Zeichen darstellen können. Apps, die ihre eigenen Texte rendern, z. B. Spiele, Dokumentbetrachter oder Browser, benötigen diese Informationen. In Android Q können Sie die unterstützte Systemschrift für eine Zeichenfolge mit der NDK-API FontMatcher abrufen.

 Systemschriftarten, die diesen Text rendern können

Systemschriftarten, die diesen Text rendern können

Betrachten wir den obigen Suchbegriff. Die FontMatcher -API gibt uns das Schriftartobjekt und die Länge zurück. Ein vereinfachtes Pseudocode-Beispiel sieht folgendermaßen aus:













// font = NotoSansCJK-Regular.ttc
// Länge = 2
auto [font, length] 



 = AFontMatcher_match ("た た す a.k.a. の な");

// font = Roboto-Regular.ttf
// Länge = 8
auto [font, length] 



 = AFontMatcher_match ("a.k.a. の な");

// font = NotoSansCJK-Regular.ttc
// Länge = 2
auto [font, length]  = AFontMatcher_match ("の の");

Die FontMatcher-API gibt nie zurück nullptr :

  • Wenn keine Schriftart die angegebene Zeichenfolge unterstützt, wird eine Schriftart für Tofu (󟿽), das fehlende Glyphensymbol, zurückgegeben.
  • Wenn kein exakter Stil unterstützt wird, wird eine Schriftart mit dem ähnlichsten Stil zurückgegeben.

Wenn Sie alle verfügbaren Systemschriftarten abrufen möchten, können Sie dies mit einer neuen API für die Schriftartenaufzählung tun. In Java können Sie SystemFonts.getAvailableFonts oder im NDK ASystemFontIterator verwenden. Die Ergebnisse der Schriftartenaufzählung werden nur durch eine Systemaktualisierung geändert. Sie sollten sie daher zwischenspeichern.

Font-Updates

Neue Myanmar-Schriftart

Android hat eine neue Myanmar-Schriftart zu Android Q hinzugefügt, die Unicode-kompatibel ist und Unicode- und Nicht-Unicode-Burmesisch (allgemein bekannt als Zawgyi) direkt aus dem Box. Das bedeutet, dass Android ab Android Q einfacher zu Unicode wechseln kann: Ein Benutzer kann jetzt zum ersten Mal Unicode- und Nicht-Unicode-Text mit einer Unicode-Schriftart lesen. Android fügte dem CDD des Android-Ökosystems neue Anforderungen hinzu, die Unicode stärker erfordern, einschließlich eines neuen Subtags "Qaag", das OEMs als Gebietsschema für Nicht-Unicode-Burmesen verwenden sollten. All diese Änderungen dürften den Entwicklern das Leben auf lange Sicht erleichtern, da eine geringere Fragmentierung des Ökosystems die Entwicklung für unsere 50 Millionen Benutzer in Myanmar erleichtert.

Neue Emojis

 Neue Emojis in Android Q

Neue Emojis in Android Q

Begrüßen Sie Ihre neuen Emojifreunde! Das neueste Update enthält eine Reihe von behindertengerechten Emojis, 59 geschlechtsspezifische Designs, rassenübergreifende Paare sowie einige niedliche Tiere und Haushaltsgegenstände. Sehen Sie die neueste und beste Version von Gboard auf Ihrem Android Q-Gerät Ihrer Wahl.

Text spielt in den meisten Apps eine wichtige Rolle. Daher investieren wir weiterhin in die Verbesserung der Funktionen und der Leistung der Text-API. Weitere Informationen zu den neuen APIs in Android Q sowie bewährte Vorgehensweisen beim Arbeiten mit Text finden Sie in unserem Google I / O 2019-Vortrag:



About AndroidWeltEditor

Check Also

15 best Android emulators for PC and Mac of 2021

There are a lot of valid reasons why someone would want to run Android emulators …

Leave a Reply

Your email address will not be published. Required fields are marked *