بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

آموزش تغییر فونت تمام قسمت های برنامه بوسیله کتابخانه Calligraphy

مدیریت گفتگو
Spirit 11 سال پیش
آخرین تغییر: 10 سال پیش

توسط کتابخونه Calligraphy میتونید تقریبا فونت تمام قسمت های برنامتون رو عوض کنید از TextView گرفته تا Dialog ها، در ادامه کمی در مورد نحوه کارش توضیح میدم :

1- اضافه کردن کتابخونه

توسط یکی از دو روش زیر کتابخونه رو به پروژتون اضافه کنید.

Gradle : اگر از Android Studio استفاده میکنید خط زیر رو به dependency هاتون در فایل  build.gradle پروژتون اضافه کنید و بعد Sync کنید تا کتابخونه دانلود و اضافه بشه :

compile 'uk.co.chrisjenx:calligraphy:2.0.1'

فایل Jar:  این لینک رو دانلود کنید ، فایل رو با برنامه های مشابه Winrar باز کنید، و فایل classes.jar رو در جای مناسب در پروژتون اضافه کنید.

2- اضافه کردن فونت

فایل فونت مورد نظرتون رو در پوشه assets قرار بدید.

3- کلاس Application

اگر کلاس Application یا همان G خودمون رو ندارید بسازید و خطوط زیر رو در متد onCreate قرار بدید، با توجه به اسم فونتتون اون رو در تکه کد زیر تغییر بدید.

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("BYekan.ttf")
.build()

4-کلاس Activity پایه

کلاسی مثل EnhancedActivity بسازید و متد attachBaseContext رو Override کنید و به مانند تکه کد زیر خط اول اون رو تغییر بدید:

@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

5- پایانی

حالا Activity هاتون رو از EnhancedActivity مشتق (extend) کنید، اگر مراحل رو درست انجام داده باشید نتیجه مطلوب رو خواهید دید.

 

چند نکته مهم : DELETED

نظرات

وحید 11 سال پیش
دوست عزیز مطلب سوم ;( کم داره آخرش. و اینکه برای من ارروری می ده با این مضمون: 02-23 22 E/AndroidRuntime(11926): java.lang.NoClassDefFoundError: uk.co.chrisjenx.calligraphy.CalligraphyConfig$Builder
MyNewName 11 سال پیش
برای منم همین ارور داد
سپهر 11 سال پیش
من فایل jar رو توی سایت پیدا نمیکنم !
سپهر 11 سال پیش
پیدا گردم اما منم مثل دوستان با همین مشکل برخوردم
mahan 10 سال پیش
سلام دوستان. من وقتی در قسمت " dependency " اون خط مربوطه رو اظافه می کنم خوب بعدش sync میشه .که بعد از sync با خطای زیر رو به رو می شم. باید چی کار کنم؟ Failed to resolve : uk.co.chrisjenx2.2.0 Error :(25,13) Show in file Show in Project Structure dialog. ممنون میشم کمک کنید.

پاسخ‌ها 2

وحید 11 سال پیش

import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.view.LayoutInflater;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;


public class G extends Application {

public static Context context;
public static LayoutInflater inflater;
public static final Handler HANDLER = new Handler();
public static Activity currentActivity;
public static SharedPreferences preference;
public static String encodedHash = Uri.encode("#");

public static Typeface amerfont;
public static Typeface arabicfont;
public static Typeface arabicbfont;
public static Typeface koodakfont;
public static Typeface narmfont;
public static Typeface yekanfont;
public static Typeface byekanfont;
public static Typeface iranfont;
public static Typeface yekanmob;


public static int id;
public static int number;

public static EditText edtNumberMobile;
public static EditText edtNumberCard;

public static TextView txtCheckNet;
public static ImageView imgNewNews;
public static ImageView imgProfileMenubar;


@Override
public void onCreate() {
super.onCreate();

context = getApplicationContext();
inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
preference = PreferenceManager.getDefaultSharedPreferences(this);

amerfont = Typeface.createFromAsset(getAssets(), "amer.ttf");
arabicfont = Typeface.createFromAsset(getAssets(), "arabic.ttf");
arabicbfont = Typeface.createFromAsset(getAssets(), "arabicb.ttf");
koodakfont = Typeface.createFromAsset(getAssets(), "koodak.ttf");
narmfont = Typeface.createFromAsset(getAssets(), "narm.ttf");
yekanfont = Typeface.createFromAsset(getAssets(), "yekan.ttf");
byekanfont = Typeface.createFromAsset(getAssets(), "byekan.ttf");
iranfont = Typeface.createFromAsset(getAssets(), "iran.ttf");
yekanfont = Typeface.createFromAsset(getAssets(), "yekanfont.ttf");

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
.setDefaultFontPath("iran.ttf")
.build()
);


}


//////////////////////////check internet connection
public static boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) G.context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();

if (ni == null) {
// There are no active networks.
return false;
} else
return true;
}

نظرات

Spirit 11 سال پیش
این مراحل رو تست کردم و مشکلی نبوده، سوالتون رو ویرایش کنید و کدهای کلاس G رو قرار بدید.
MyNewName 11 سال پیش
برای منم همین ارور داد
وحید 11 سال پیش
بفرما گذاشتم. ضمنا این دوستمون هم همین مشکل رو داره
Spirit 11 سال پیش
لینک و لینک بحث شده، ولی نفهمیدم مشکل از کجاست و چجوری حل میشه.
MyNewName 11 سال پیش
باید multidex فعال بشه اینطوری که جواب دادن
وحید 11 سال پیش
multudex چیست و چگونه؟
سعید 11 سال پیش
سلام.ممنون از اموزشتون .classes.jar کجاست ؟ پیداش نکردم.
kmelodi 10 سال پیش
میشه لطف کنین یه سورس کوچیک از این کتابخونه توش استفاده شده باشه رو بزارین؟
kmelodi 10 سال پیش

میشه لطف کنین یه سورس کوچیک  که از این کتابخونه توش استفاده شده باشه رو بزارین؟

نظرات


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