アンドロイドはカスタムフォントをペイントに設定しました


91

テキストを絵の具で描きたい。カスタムフォント(ex Helveticaなど)と太字でそれを描画する方法は?アセットから作成するのではなく、システムフォントを使用することをお勧めします。ありがとう。


「ペイント」:どういう意味Canvasですか?
トニー・ポニー

はい、私はいくつかのスタイルを設定するために塗料が必要です...
ブダ・ガリル

ロケールに応じてフォントを設定する方法。たとえば、英語の場合はarial.ttfを使用し、韓国語の場合はgothic_B.ttfを使用します。Androidでキャンバスにペイントするとどのように可能になるか
Dwivedi Ji

@DwivediJi:他の人の質問にコメントするのではなく、StackOverflowの質問として投稿してみましたか?
Michael Scheper

回答:


164

「カスタムフォント」とは、アセットとして提供するフォントを意味する場合、次のコードが機能するはずです。

Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); 
Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
Paint paint = new Paint();
paint.setTypeface(bold);
canvas.drawText("Sample text in bold",0,0,paint);

Helveticaはインストールされていませんが、インストールされているいくつかのフォントを使用して比較しています。アセットのフォントを使用している場合、太字を設定する方法はありますか?
ブダガヴリル

6
試してください:Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
トニー・ポニー

2
@TonythePonyあなたのコードは私にはうまくいきません。書体fontFace = Typeface.createFromAsset(getAssets()、 "fonts / comic.TTF"); 書体face = Typeface.create(fontFace、Typeface.BOLD); ペイントpaint = new Paint(); paint.setTextAlign(Paint.Align.CENTER); paint.setColor(Color.WHITE); paint.setTextSize(10); paint.setTypeface(face); paint.setFlags(Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji

1
やってみましたgetContext().getAssets()か?
ウェズリー

2
Typeface.DEFAULT_BOLD私にも問題がありましたが、動作するように変更されTypeface.BOLDました
CrandellWS 2016年

26

フォントにAndroidの新しいFonts in XMLを使用している場合、ペイントに使用される書体を取得するには、次のように使用できます。

val customTypeface = ResourcesCompat.getFont(context, R.font.myfont)

または、最小Android API> = 26

val customTypeface = resources.getFont(R.font.myfont)

次に、それをペイントオブジェクトに適用します。

mTextPaint.typeface = customTypeface

詳細については、https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-codeをご覧ください。


16

これをペイントクラスに使用します。

 Paint paint = new Paint();
   paint.setTypeface(Typeface.create("Arial",Typeface.ITALIC));

9

すでにフォントを使用していて、その太字バージョンを使用したい場合は、これを行うことができます。

currentPainter = new Paint(Paint.ANTI_ALIAS_FLAG);
currentPainter.setColor(Color.WHITE);
currentPainter.setTextSize(Utils.sp2px(getResources(), 14)); // set font size
Typeface currentTypeFace =   currentPainter.getTypeface();
Typeface bold = Typeface.create(currentTypeFace, Typeface.BOLD);
currentPainter.setTypeface(bold);

私は上記の答えを使用しましたが、この変更は私にとって必要でした-だから私はそれを言及したいと思いました


1

リソース(Kotlin)のフォントを使用する場合:

val textPaint = TextPaint()
textPaint.typeface = resources.getFont(R.font.font_name)

これは質問とは関係ないかもしれませんが、これは私が探していたものです-おそらく誰かもそれを必要とするでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.