آموزش فونت در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی به آموزش فونت در برنامه نویسی اندروید می پردازیم در دفعه پیش آموزش لود فونت برای تمامی بخش های اپلیکیشن را قرار داده بودیم و پشنهاد می کنم از همان کد استفاه کنید البته باعث محدود شدن شما از extend گیری از AndroidManifest را از دست می دهید ولی خب اگر درست برنامه نویسی کرده باشید به آن بخش نیازی ندارید در ادامه با ما همراه باشید.
بارگذاری فونت برای تمامی بخش های اپلیکیشن
اگر فرض کنیم در پوشه assets ک پوشه به نام fonts وجود دارد و در آن یک فونت به نام mycustomfont.ttf قرار دارد از کد زیر استفاده می کنیم.
1 2 3 | TextView tv = ((TextView) findViewById(R.id.select_item_title)); Typeface face=Typeface.createFromAsset(getAssets(),"fonts/mycustomfont.ttf"); tv.setTypeface(face); |
کد بالا فونت TextView را تعییر میدهد برای دکمه (button ) و View های دیگر هم به همین شکل است.
حالا فرض کنیم می خواهید از آموزش قبلی استفاده نکنید یعنی از کتاب خانه استفاده نکنید و یک کلاس سفارشی برای تنظیم فونت ایجاد کنید.
یک فایل جاوا به نام FontsOverride.java ایجاد کنید و کد زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package ir.programchi; import android.content.Context; import android.graphics.Typeface; import java.lang.reflect.Field; /** * Created by Jefferson on 06-05-2017 */ public class FontsOverride { public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) { final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName); replaceFont(staticTypefaceFieldName, regular); } protected static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) { try { final Field staticField = Typeface.class .getDeclaredField(staticTypefaceFieldName); staticField.setAccessible(true); staticField.set(null, newTypeface); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } |
حالا وارد فایل AndroidManifest.xml شده و آن فایل را تعریف کنید مثل زیر
1 2 3 4 5 6 7 | <application android:name=".FontsOverride" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> |
حالا برای لود کردن فونت مثل زیر عمل کنید.
1 | FontsOverride.setDefaultFont(this, "DEFAULT", "fonts/raleway.ttf"); |
باید در assets یک پوشه به نام fonts ایجاد کنید و فونت را در آن قرار دهید.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام
وقتی خط android:name=”.FontsOverride” را به فایل مانیفست اضافه میکنم برنامه کلوز میده
مشکل از چیه؟
بصورت تک به تک تونستم فونت متنهارو تغییر بدم ولی قسمت تغییر فونت کلی برنامه برنامه کلوز میده.
لطفاراهنمایی کنید.
تشکر
سلام
شما باید فونت را در پوشه assets قرار داده باشید و در فایل جاوا FontsOverride بررسی کنید مسیر درست باشد و در آخر باید log را چک کنید تا علت خطا را متوجه شوید .
موفق باشید.
سلام وقت بخیر آقا برنامه من چندتا تب داره که هر تب عنوان هایی داره که روش کلیک میکنیم وارد توضیحاتش میشه، بعد یک منوی کشویی دارم که داخلش گزینه تنظیمات داره تو صفحه جاوای تنظیمات حالا میخوام با انتخاب هر RadioButton اون توضیحاتم فونتشون تغییر کنن،اگه نیاز به SharePreferences دارم کجا اعمالش کنم با چه کدی؟یعنی نمیدونم واقعا چجوری بهم ارتباط بدم.اگه کدشو بنویسین واسم ممنون میشم
سلام اگر بخواهید در لحظه فقط تغییر کند و ذخیره نشود نیازی نیست این کار را بکنید یعنی کافیه typeface را تغییر دهید اگر می خواهید ذخیره شود لازم است یک چیزی ذخیره کنید تا بفهمید اون font تعیین شده است.
مثال Sharedpreferences به شکل ساده در زیر قرار داده شده شرط منطقی رو در ادامه توضیج میدهم.
https://programchi.ir/2017/04/27/sharedpreferences_android/
ابتدا شما باید چک کنید Sharedpreferences خالی هست یا خیر با کد زیر می توانید این کار را انجام دهید.
می توانید با یک مقدار پیشفرضی که قبلا در آن قرار دادید بررسی کنید.
بعد از اینکار مثلا به ازای هر فونت یک مقدار را put کنید و سپس چک کنید چه مقداری در هر بار قرار گرفته است و فونت را با استفاده از typeface لود کنید.
موفق و پیروز باشید.
سلام.
من میخوام یه برنامه بسازم که بهش یه متنی میدم و اون متنو فونت دارش می کنه و بعدش بشه اون متن فونت دارو کپی کرد و جاهای دیگه مثل پروفایل تلگرام پیستش کرد مثل برنامه هایی مثل زیبانویس یا شیک نویس.
خب حالا من برنامه رو ساختم و متن موردنظرم فونت رو میگیره،کپی هم میشه ولی وقتی جای دیگه ای پیستش می کنم دیگه فونت نداره نمیدونم باید چیکار کنم.
نمیدونم تونستم منظورم خوب برسونم یا نه
سلام.من یه سوالی دارم که نمیدونم باید اینجابپرسمش یا جای دیگه.
میخوام یه برنامه بسازم که توش یه button هست و هر بار که روش کلیک میشه به متغیر int یکی یکی اضافه بشه.ولی نمیدونم چطوری باید کداشو بنویسم.البته میخوام مقدار int توسط یه textview نمایش داده بشه.باتشکر فقط لطفاً زودتر جواب بدین من خیلی بهش نیاز دارم تو اینترنتم خیلی گشتم هیچی نبود