অ্যান্ড্রয়েড একটি পেইন্টে কাস্টম ফন্ট সেট করে


92

আমি একটি রঙে একটি পাঠ্য আঁকতে চাই। এটি কীভাবে কাস্টম ফন্টের ( প্রাক্তন হেলভেটিকা ) এবং সাহসী দ্বারা আঁকবেন ? আমি কোনও সিস্টেম ফন্ট ব্যবহার করা পছন্দ করি এবং এটি সম্পদ থেকে তৈরি না করি। ধন্যবাদ


"পেইন্ট": আপনার মানে Canvas?
টনি দ্য টনি

হ্যাঁ, কিছু স্টাইল সেট করার জন্য আমার
পেইন্টটি দরকার

লোকেল অনুসারে ফন্টটি কীভাবে সেট করবেন, উদাহরণস্বরূপ ইংরেজির জন্য আমরা আরিয়াল.টিটিএফ এবং কোরিয়ানদের জন্য আমি গথিক_বি.টিএফ ব্যবহার করতে চাই। অ্যান্ড্রয়েডে ক্যানভাসে পেইন্টের মাধ্যমে এটি কীভাবে কার্যকর
দ্বিবেদী জি

@ দ্বিবেদীজি: আপনি কি অন্য কারও প্রশ্নে মন্তব্য করার পরিবর্তে স্ট্যাকওভারফ্লো প্রশ্ন হিসাবে পোস্ট করার চেষ্টা করেছেন?
মাইকেল শ্যাপার

উত্তর:


167

যদি "কাস্টম হরফ" দ্বারা আপনি এমন কোনও ফন্টকে বোঝাচ্ছেন যা আপনি সম্পদ হিসাবে সরবরাহ করছেন তবে নিম্নলিখিত কোডটি কাজ করা উচিত:

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

হেলভেটিকা ​​ইনস্টল করা নেই, তবে আমি তুলনা করার জন্য কিছু ইনস্টলড ফন্ট ব্যবহার করেছি। আমি যদি সম্পদ থেকে কোনও ফন্ট ব্যবহার করি তবে কীভাবে সাহসী সেট করবেন আপনার কোনও ধারণা আছে?
বুদা গ্যাভ্রিল

6
চেষ্টা করুন: Typeface plain = Typeface.createFromAsset(assetManager, pathToFont); Typeface bold = Typeface.create(plain, Typeface.DEFAULT_BOLD)
টনি দ্য পনি

4
@ টনিথপনি আপনার কোডটি আমার পক্ষে কাজ করে না। টাইপফেস ফন্টফ্রেস = টাইপফেস.ক্রেটফ্রমআসেট (getAssets (), "হরফ / কমিক.টিটিএফ"); টাইপফেস ফেস = টাইপফেস.create (ফন্টফ্রেস, টাইপফেস। পেইন্ট পেইন্ট = নতুন পেইন্ট (); color.setTextAlign (পেইন্ট.এলাইন.সেন্টার); পেইন্ট.সেটর কালার (কালার.উইচইইচটিই); color.setTextSize (10); পেইন্ট.সেটটাইপফেস (মুখ); color.setFlags (পেইন্ট। ANTI_ALIAS_FLAG);
দ্বিবেদী জি

4
আপনি চেষ্টা করেছেন getContext().getAssets()?
ওয়েসলি

4
Typeface.DEFAULT_BOLDআমাকে সমস্যাগুলিও দিয়েছিল তবে Typeface.BOLDকাজ করে
বদলেছে

31

আপনি যদি আপনার ফন্টগুলির জন্য এক্সএমএলে অ্যান্ড্রয়েডের নতুন ফন্টগুলি ব্যবহার করেন তবে পেইন্টের জন্য টাইপফেসটি ব্যবহার করতে পারেন:

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

বা যদি আপনার সর্বনিম্ন অ্যান্ড্রয়েড এপিআই> = 26

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

তারপরে এটি আপনার পেইন্ট অবজেক্টে প্রয়োগ করতে:

mTextPaint.typeface = customTypeface

আরও তথ্যের জন্য https://developer.android.com/guide/topics/ui/look-and-feel/fouts-in-xML#fouts-in-code দেখুন


17

পেইন্ট শ্রেণীর জন্য এটি ব্যবহার করুন:

 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

আপনি যদি সংস্থান থেকে কোনও ফন্ট ব্যবহার করতে চান (কোটলিন):

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

এটি প্রশ্নের সাথে সম্পর্কিত নাও হতে পারে তবে আমি এটিই খুঁজছিলাম - সম্ভবত কারওরও এটির প্রয়োজন হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.