دوستان عزیز سلام
با یه آموزش بسیار کاربردی دیگه در خدمت شما هستم
میخایم با فونت ها کار کنیم به کمک کتابخانه کالیگرافی Calligraphy
کالیگرافی چیست ؟
ساده بخام بگم یک کتابخانه هستش که به کمک اون
خیلی ساده میتونید فونت دلخواه خودتون رو به اپلیکیشن اضافه کنید
حالا فونت رو روی یک ویو خاص ست کنید
یا روی کل اپلیکیشن ست کنید
اینم آدرس رسمی کتابخانه Calligraphy در گیتهاب هستش
در ادامه اول طی ۵ مرحله کتابخانه رو کانفیگ و روی اکتیویتی موردنظر ست میکنیم
بعد ۴ روش برای استفاده از کتابخانه بهتون یاد میدم
کانفیگ کالیگرافی : مرحله ۱
ابتدا باید کتابخانه کالیگرافی رو به پروژه اضافه کنید
کدهای ذیل رو به گریدل اضافه کنید و گریدل رو Sync کنید
dependencies {
implementation 'io.github.inflationx:calligraphy3:3.1.1'
implementation 'io.github.inflationx:viewpump:2.0.3'
}
من این مرحله رو انجام دادم به تصویر زیر دقت کنید
کانفیگ کالیگرافی : مرحله ۲
حالا باید پوشه assets رو ایجاد کنید
و درون پوشه assets یک پوشه دیگر با نام fonts ایجاد کنید
و فونتهای دلخواه خودتون رو به اون اضافه کنید
اگه بلد نیستید این پوشه ها رو اضافه کنید به این آموزش مراجعه کنید و یاد بگیرید
من این مرحله رو انجام دادم به تصویر زیر دقت کنید
همونطور که در تصویر بالا میبینید ، من چهار فونت به پروژه اضافه کردم
و قرار هستش از این فونتها به چهار روش مختلف استفاده کنم
کانفیگ کالیگرافی : مرحله ۳
اینجا خوب دقت کنید
ما باید یک کلاس کمکی ایجاد کنیم
این کلاس رو با نام Init که مخفف کلمه Initialization هستش ایجاد میکنیم ، یعنی مقدار دهی اولیه
باید درون این کلاس ، کانفیگ اولیه کتابخانه کالیگرافی رو انجام بدیم
یعنی کدهای زیر رو به اون اضافه کنم
ViewPump.init(ViewPump.builder()
.addInterceptor(new CalligraphyInterceptor(
new CalligraphyConfig.Builder()
.setDefaultFontPath("fonts/negar.ttf")
.setFontAttrId(R.attr.fontPath)
.build()))
.build());
من کلاس رو ایجاد کردم و کانفیگ کالیگرافی رو هم انجام دادم
به تصویر زیر دقت کنید
به خط ۱۹ تصویر بالا دقت کنید
من در اینجا به کالیگرافی گفتم که
فونت پیشفرض من فونت negar هستش
کانفیگ کالیگرافی : مرحله ۴
حالا باید کلاس کمکی Init رو به AndroidManifest معرفی کنیم
من این کار رو انجام دادم ، به تصویر زیر دقت کنید
به خط ۶ در تصویر بالا دقت کنید
دقیقا با اضافه کردن این خط ، کلاس کمکی رو به پروژه معرفی کردم
نکته بسیار مهم
اصلا کاربرد کلاس کمکی چیه ؟ همون کلاس Init
هر بار که اپلیکیشن روی دستگاه کاربر اجرا میشه
قبل از هرکاری ، ابتدای ابتدای ابتدای اجرا
اپلیکیشن وارد کلاس کمکی میشه
و عملیات درون کلاس کمکی رو اجرا میکنه
حالا ما درون کلاس کمکی فقط کانفیگ کتابخانه کالیگرافی رو انجام دادیم
اما ممکنه از این کلاس کمکی ، استفاده های دیگری هم داشته باشیم
کانفیگ کالیگرافی : مرحله ۵
حالا ما کتابخانه کالیگرافی رو در دسترس داریم
درهر اکتیویتی ای که بخایم از کتابخانه استفاده کنیم
باید درون کلاس اون کدهای زیر رو قرار بدیم
@Override
protected void attachBaseContext(Context newBase)
{
super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase));
}
من در کلاس MainActivity این کار رو انجام دادم
یعنی کتابخانه کالیگرافی رو روی اکتیویتی MainActivity ست کردم
به تصویر زیر دقت کنید
استفاده کالیگرافی : تغییر فونت کل اکتیویتی
قبلا این اتفاق افتاده
با کانفیگ کالیگرافی و ست کردن روی اکتیویتی مورد نظر
کل لایوت مربوط به اکتیویتی مورد نظر تغییر فونت پیدا میکنه
به فونت پیش فرضی که در مرحله 3 کانفیگ به کالیگرافی دادیم
تصویر زیر هم مربوط به لایوت MainActivity من هستش
مشاهده می کنید چهار TextView دارم ، که فونتشون تغییر پیدا کرده
استفاده کالیگرافی : تغییر ویویی خاص به روش fontPath
حالا که فونت تمام ویو ها تغییر کرده
میخام فقط فونت مربوط به TextView شماره ۲ رو تغییر بدم
به فونت nastaliq تغییر بدم
برای این کار از روش fontPath استفاده میکنم
و خط زیر رو به ویو موردنظر اضافه میکنم و تمام
fontPath="fonts/nastaliq.ttf"
به تصویر زیر دقت کنید که فونت تمام ویوها به یک شکل هستش
اما فونت TextView شماره ۲ تغییر کرد
پس ۲ روش دیگه ؟
دیگه آموزش طولانی شد
اگر این آموزش بازخورد خوبی داشت و کامنتهای پر انرژی ای دریافت کردم
جلسه بعدی ، ۲ روش دیگه رو هم آموزش میدم
و همینطور کلی نکته دیگه
سورس کدهای این آموزش
سورس کدهای این آموزش که درواقع طی یک پروژه انجام دادم
روی همین آموزش براتون پیوست میکنم
سخن آخر
خدایی برا آموزش ها زیاد زحمت میکشیم
تا شما دوستان عزیز به درک خوبی از برنامه نویسی اندروید برسید
در کانال و گروه تلگرامی همیار اندروید هم منتظر شما هستیم
در پناه حق ، بدرود