Merhaba Arkadaşlar;
Androidde uygulamamıza temel bir font atamak isteyebiliriz ve bunu androidin kendi yetenekleriyle yapmak istersek işimiz bayağı bir zor olacaktır ama bunun için geliştirilmiş bir kütüphane olan
Calligraphy kütüphanesini kullanacağız.
Öncelikle kütüphaneyi projemize eklememiz gerekiyor. Projemize kütüphaneyi dahil etmemiz için build.gradle dosyasını açıyoruz ve dependencies bölümüne aşağıdaki compile kodunu ekleyip sağ üstten Sync Now diyoruz.
Kodumuz:
[java]
dependencies {
compile 'uk.co.chrisjenx:calligraphy:2.1.0'
}
[/java]
Sync Now dedikten sonra androidin özel klasörlerinden olan assets klasörü oluşturuyoruz. assets klasörü oluşturmak için:
app a sağ tıkla > New > Folder > Assets Folder şeklinde asset klasörü oluşturduk.
[caption id="attachment_639" align="alignnone" width="211"]
Assets Klasörü Oluşturma[/caption]
Assets klasörü içine şimdi de fonts klasörü oluşturalım. Bunun için
assets klasörüne sağ tıklayıp new > directory adımlarını takip edebilirsiniz.
Font klasörü de oluşturduktan sonra bu klasör içine kullanmak istediğimiz fontu atıyoruz. ben open sans attım.
Daha sonra fontumuzun çalışması için bir class oluşturuyoruz.
Ben Sınıf adına UygulamaFontu dedim siz istediğinizi diyebilirsiniz ama bir hata olmaması açısından UygulamaFontu olarak oluşturmanızı tavsiye ederim.
Daha sonra oluşturduğumuz sınıfı Application sınıfından kalıtıp onCreate methodunu kullanmamız gerekiyor. Bu kısmı biraz hızlı geçiyorum kod üzerinden bakarsak daha iyi olacak.
[java]
package vehbiakdogan.com.nobetcieczanebul;
import android.app.Application;
import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
import vehbiakdogan.com.nobetcieczanebul.R;
/**
* Created by vehbiakdogan on 19.2.2016.
*/
public class UygulamaFontu extends Application { // application sınıfından kalıttık
public void onCreate() { // on create methodunu override ettik
super.onCreate(); // ana onCreate Methodunu çalıştırdık
// şimdi default font ayarlarımızı yapmaya başlıyoruz.
CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() // kütüphaneyi başlattık
.setDefaultFontPath("fonts/opensans/OpenSans-Regular.ttf") // font yolunu gösterdik
.setFontAttrId(R.attr.fontPath) // uygulamadaki tüm elemanlara font ataması burda yapılıyor.
.build() // ve build ettik
);
}
}
[/java]
Evet Arkadaşlar şimdi daha iyi anlamışsınızdır diye umuyorum :)
Evet geldik son adımımıza :)
Şimdi Androidmanifest.xml dosyamızı açıyoruz ve application tagının olduğu yere bir android:name değeri veriyoruz ve buraya bizim classımızın adını veriyoruz.
Kısaca eklemeniz gereken kod:
[xml]
<application <!-- Bu Tagdan Sonra -->
android:name=".UygulamaFontu" <!-- .classAdi şeklinde class adını ekliyorsunuz. -->
<!-- application tagının diğer kodlarına dokunmayınız. ! -->
[/xml]
şeklinde yapabilirsiniz. Örneğin benim AndroidManifest.xml dosyam:
[xml]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="vehbiakdogan.com.denemeUygulama">
<application
android:name=".UygulamaFontu"
android:allowBackup="true"
android:icon="@mipmap/logokirmizi"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.noActionBar">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
[/xml]
Son olarakta attachBaseContext Methodumuzu fontun değişmesini istediğimiz Activity de çağırarak fontumuzun çalışmasını sağlayalım.
Örn. main Activity de çalışmasını istiyorsak MainActivity i açıp aşağıdaki şekilde düzenleyelim.
[java]
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
// bu method Fontumuzun bu activity de çalışmasını sağlar.
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}
}
[/java]
Eğer adımları başarılı bir şekilde yaptıysanız artık uygulamanızın ana fontunu değiştirmiş olacaksınız.
Bol yazılımlı günler :)