آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

فونت های دلخواه که با کلیک روی هرکدوم در تنظیمات فونت کل برنامه تغییر کنه و همچنین سایز فونت

126499  9 سال پیش  8 سال پیش
+1 0

سلام

دوستان کسی میتونه محبت کنه نحوه ساخت لیستی از فونت های دلخواه که با کلیک روی هرکدوم در بخش تنظیمات فونت کل  فونت برنامه تغییر کنه و همچنین سایز فونت در اندروید استدیو رو به اموزشش رو به من بده اخه هرکجا سرچ کردم پیدا نکردم البته سایز فونت رو پیدا کردم ولی اینکه شخص استفاده کننئه از نرم افزار بخواد دلخواه نوع  فونت رو انتخاب کنه چیزی پیدا نکردم سپاس فراوان

 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
مسعود فرمانی  9 سال پیش
+1 0

سلام ، میتونید با استفاده از کلاس زیر که کدشو براتون قرار میدم و با استفاده از روش java reflection فونت کل برنامتونو تغییر بدید ( از فونت دلخواه میتونید استفاده کنید ، در حقیقت فونتی که استفاده میکنید جایگزین یکی از فیلدهای کلاس TypeFace میشه...) و برای اینکه کاربرتون بتونه بین چند فونت یکیو انتخاب کنه بدیهیه که به چنتا شرط و یه ریستارت کردن صفحه بعد از انتخاب کاربر نیاز دارید... :

 public final class FontsOverride {

public static void setDefaultFont(Context context,
String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typeface.createFromAsset(context.getAssets(),
fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}

private static void replaceFont(String staticTypefaceFieldName,
final Typeface newTypeface) {
try {
final Field staticField = Typeface.class
.getDeclaredField(staticTypefaceFieldName);
staticField.setAccessible(true);
staticField.set(null, newTypeface);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
}
}

 و به صورت زیر میتونید از این کلاس بهره ببرید :
// "iran_sans_light.ttf" is my custom font in asset directory 
// "SERIF" is one of TypeFace class's Fields
FontsOverride.setDefaultFont(this, "SERIF", "iran_sans_light.ttf");
 و البته توی استایل(تم) برنامتون لازم هست که بصورت زیر نوشته باشید : 
<item name="android:typeface">serif</item>
0 0
و البته توی استایل (تم) برنامتون لازم هست که خاصیت typeface رو برابر serif قرار بدید : serif (9 سال پیش)
0 0
با تشکر .ولی مهندس من نمیخوام کاربر از برنامه خارج بشه .مثلا در صفحه تنظیمات میخوام یک ردیف متن نمونه فونت نشون بده ردیف بعدی همین انواع فونت انتخابی ردیف سوم هم اندازه فونت رو بشه تغییر داد که اکه تغییری صورت میگیره همزمان با تغییرات در ردیف اول متن نمونه فونت اون تغییرات رو بشه نشان داد.مهندس من مبتدی هستم تازه 5ماه کار میکنم واضخ و شفاف بگی ممنونت میشم (9 سال پیش)
0 0
چشم کارایی که لازمه انجام بدید رو قدم به قدم مینویسم براتون.....در مورد اینکه میخواید کاربر همون لحظه تغییرات صورت گرفته رو ببینه نیازی به ریستارت کردن نیست مثلا میتونید تغییرات رو به همون تکست ویویی که برای نمونه قرار دادید ، اعمال کنید و بعد از اینکه کاربر یکیو پسندید و انتخاب کرد اونوقت میتونید کارای زیر رو انجام بدید :... (9 سال پیش)
پاسخ به سوال 
مسعود فرمانی  9 سال پیش
0 0

  1. اول یه فایل کلاس در پروژه تون بسازید دقیقا به نام FontsOverride(اسم این فایل کلاس با اسم کلاسی که کدشو قرار دادم دقیقا باید یکسان باشه...)
  2. تغییراتی که کاربر انتخاب کرده رو در sharedPreference ذخیره کنید و توی کلاس application یا همون کلاس G که اقای اقاجانی در آموزش هاشون گفتن و توی متد oncreate  از sharedPreference بخونیدش و در یک متغیر استاتیک ذخیرش کنید....
  3. توی کلاس اکتیویتی اصلیتون (MainActivity) ( یا اینکه یک اکتیویتی پدر ایجاد کنید و این کدها رو توی اون بنویسید و بقیه اکتیویتی ها رو از اکتیویتی پدر extend کنید...) و توی متد onCreate بر اساس مقدار ذخیره شده در متغیر استاتیک که بالا اشاره کردم به شکل زیر فونت رو override کنید :
  4.  // USER_CHOICE_FONT is a static integer
    switch (USER_CHOICE_FONT){
    case 0:
    FontsOverride.setDefaultFont(this, "SERIF", "font_default.ttf");
    break;
    case 1:
    FontsOverride.setDefaultFont(this, "SERIF", "font_one.ttf");
    break;
    // and .....
    }
0 0
در صورتیکه موفق به پیاده سازی روشی که اشاره کردم شدید و تونستید ازش نتیجه بگیرید لطفا این پاسخ رو به عنوان پاسخ صحیح انتخاب کنید ...متشکرم (9 سال پیش)
0 0
میشه سورس بصورت گیت هاب درج کنی برام؟من چیزی شبیه این عکس میخوام که تنظمات به راحتی در دسترس باشه (9 سال پیش)
پاسخ به سوال 
126499  9 سال پیش
0 0

پاسخ به سوال 
Mir Unknown  8 سال پیش
0 0

من همون اوایل ها که آموزش های استاد رو دیدم ی برنامه تستی نشوتم به عنوان هند بوک که در تنظیماتش امکان تغییر فونت امکان تغییر اندازه و رنگ فونت رو گذاشته بودم - لینک برنامه در کافه بازار

حالا کار های که یادم مونده انجام دادم رو براتون میگم

اگه نمیخواهی امکان تغییر رنگ رو بزارید اول دو متغییر تعیرف کنید در غیر این صورت سه متغییر تعریف کنید و مقدار اولیه بدید بهشون حالا تو فایل های جاوا با مقدار اولیه فونت و اندازه رو برای ایتم های که میخواهید فونت و اندازه رو بر اساس تنظیمات تغییر بدید رو ست کنید بعد در صفحه تنظیمات مقدار های متغییر ها رو تغییر بدید و با استفاده از sharedPreference  تغییرات رو ذخیره کنید همین!

سورس برنامه رو هم میتونید از تو کانال تلگرام سورس کد دریافت کنید اسم سورس در کانال کتابخانه هستش و چون نسخه قدیمی برنامه هستش از نظر ظاهری با برنامه تو بازار فرق میکنه - سورس با اکلیپس نوشته شده ولی میتونید تو اندروید استودیو هم امپورت و استفاده کنید


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .