android mengatur font khusus menjadi cat


92

Saya ingin menggambar teks ke cat. Bagaimana cara menggambarnya dengan font khusus ( ex Helvetica ) dan juga tebal? Saya lebih suka menggunakan font sistem dan bukan membuatnya dari aset. Terima kasih.


"cat": Maksud Anda Canvas?
Tony the Pony

ya, saya perlu cat untuk mengatur beberapa gaya ...
Buda Gavril

Cara setting font sesuai locale, misalnya untuk bahasa inggris kita ingin menggunakan arial.ttf dan untuk korea saya ingin menggunakan gothic_B.ttf. Bagaimana mungkin dengan cat di atas kanvas di android
Dwivedi Ji

@DwivediJi: Sudahkah Anda mencoba mempostingnya sebagai pertanyaan StackOverflow, daripada mengomentari pertanyaan orang lain?
Michael Scheper

Jawaban:


167

Jika yang Anda maksud dengan "font khusus" adalah font yang Anda berikan sebagai aset, kode berikut harus berfungsi:

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 belum diinstal, tetapi saya telah menggunakan beberapa font yang diinstal untuk membandingkan. Jika saya menggunakan font dari aset, apakah Anda tahu cara menetapkan tebal?
Buda Gavril

6
Cobalah: Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD).
Tony the Pony

2
@TonythePony kode Anda tidak berfungsi untuk saya. Jenis huruf fontFace = Jenis huruf.createFromAsset (getAssets (), "font / comic.TTF"); Typeface face = Typeface.create (fontFace, Typeface.BOLD); Cat cat = Cat baru (); paint.setTextAlign (Paint.Align.CENTER); paint.setColor (Color.WHITE); paint.setTextSize (10); paint.setTypeface (wajah); paint.setFlags (Paint.ANTI_ALIAS_FLAG);
Dwivedi Ji

1
Apakah kamu sudah mencobanya getContext().getAssets()?
Wesley

2
Typeface.DEFAULT_BOLDmemberi saya masalah juga tetapi beralih ke Typeface.BOLDbekerja
CrandellWS

29

Jika Anda menggunakan Font baru Android dalam XML untuk font Anda, maka untuk mendapatkan jenis huruf yang digunakan untuk paint, Anda dapat menggunakan:

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

atau jika API Android min Anda> = 26

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

Kemudian untuk menerapkannya ke objek cat Anda:

mTextPaint.typeface = customTypeface

Untuk info lebih lanjut, lihat https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml#fonts-in-code


17

Gunakan ini untuk kelas cat:

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

9

Jika Anda sudah memiliki font yang sedang digunakan dan ingin menggunakan versi yang tebal, Anda dapat melakukannya.

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);

Saya menggunakan jawaban di atas, tetapi modifikasi ini perlu bagi saya - jadi saya pikir saya akan menyebutkannya


1

Jika Anda ingin menggunakan font dari resource (Kotlin):

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

Ini mungkin tidak terkait dengan pertanyaan, tetapi inilah yang saya cari - mungkin seseorang juga membutuhkannya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.