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.
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.
Jawaban:
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);
Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
.
getContext().getAssets()
?
Typeface.DEFAULT_BOLD
memberi saya masalah juga tetapi beralih ke Typeface.BOLD
bekerja
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
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
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.
Canvas
?