Androidおよびカスタムフォントまたは「Long live API 26」

API 26の出現により、設計者がRoboto以外の何かを使用したいときに、カスタムビューを歪曲して記述することを余儀なくされたときがついに終わりました。



以前のように。 短いレビュー



非標準フォントが必要なビューが多数ある場合は、次のようなものを使用しました。



view.xml



<ru.my.app.with.CustomFontTextView android:id="@+id/title" ... app:my_typeface="proximaBold" />
      
      





CustomFontTextView.class



 Typeface myCustomFontBold = Typeface.createFromAsset(getAssets(), "fonts/myCustomFont-Bold.otf"); setTypeface(myCustomFontBold);
      
      





そして、毎回フォントへのパスを書くのではなく、ポインティングを指す大きな部分を見逃しました



 app:my_typeface="myCustomFontBold"
      
      





まあ、どちらかといえばGitHubに行き、その結果カリグラフィーが見つかりました(7000スター!)



このアプローチが大量の定型コードと、毎回Typefaceに尋ねることでメモリからリークしない効率的な方法の両方に多くの欠点を含んでいることは秘密ではありません。



しかし、API 26ではすべてが変更されました



Googleはついにfinallyめ、Robotoの賦課を放棄し、サードパーティのフォントの便利な接続を決定したようです。



オリジナルを読みたい人のためのリンク



これで、接続はいくつかの簡単な手順で構成されます。



1. resで フォントフォルダーを作成する

リソースタイプ選択フォント



画像



2.プロジェクトに必要なすべてのフォントを新しいフォルダーにドラッグアンドドロップします



3.フォントファミリ用のファイルを作成します。



 <?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" app:fontStyle="normal" app:fontWeight="400" app:font="@font/lobster_regular" /> <font android:fontStyle="normal" android:fontWeight="100" android:font="@font/lobster_light" app:fontStyle="normal" app:fontWeight="100" app:font="@font/lobster_light" /> </font-family>
      
      





注:古いバージョンのAndroidをサポートする場合、ファイルの外観をサンプルにすぐに追加しました。 (14から)。 運が良く、超新しいデバイスのみをターゲットにしている場合、ファイルは2倍に削減されます



APIのオプション> = 26
lobster.xml

 <?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="normal" android:fontWeight="100" android:font="@font/lobster_light" /> </font-family>
      
      





さて、あなたはただアセンブリを楽しむ必要があります



TextViewでの使用



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





スタイルで使用



 <style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item> </style>
      
      





そして、あなたはもはや効率性に関する頭痛の種はありません:)



All Articles