Android Resources Dosyaları

Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Android Eğitimleri yazı serimizde bu dersimizde Android Resources Dosyaları ile devam ediyoruz.

Android Resources Dosyaları, uygulamalarımızı geliştirmek için bize yardımcı olan; aşağıda yer alan ana dosyalardan oluşmaktadır. Örnek verecek olursak; ekran boyutuna bağlı olarak farklı bir UI düzeni veya dil ayarına bağlı olarak farklı dizeler sunmayı buradaki klasörler sayesinde sağlarız. Ayrıca istediğimiz animasyonları oluşturup kullanabilir, istediğimiz tasarımları oluşturabiliriz. Aşağıda yer aldığı gibi çeşitli android resources dosyaları bulunmaktadır.

  • drawable
  • layout
  • mipmap
  • values
  • anim
  • raw
  • xml

anim

Android Resources tiplerinden olan anim klasörü; uygulamalarımızda kullanmak istediğimiz animasyon yapılarını oluşturduğumuz android resources dosyaların dan anim klasörüdür.

dosya örneği : res/anim/fade_out.xml

fade_out.xml

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="@android:integer/config_mediumAnimTime"
        android:fromAlpha="1.0"
        android:toAlpha="0.0"/>
</set>

kotlin kodu:

val animation = AnimationUtils.loadAnimation(this, R.anim.fade_out)

java kodu:

Animation animation = AnimationUtils.loadAnimation(this, R.anim.fade_out);

drawable

Çeşitli bitmap dosyalarını ( .png, .jpg, .gif ) uzantılı ve çeşitli xml dosyalarını konumlandırdığımız yerdir. Farklı ekran boyutlarına  göre kullanacağımız resimlerin aşağıdaki gibi klasörleme mantığı vardır.

/drawable-ldpi  : düşük density ekranlar için

/drawable-mdpi : orta density ekranlar için

/drawable-hdpi : yüksek density ekranlar için

/drawable-xhdpi : ekstra yüksek density ekranlar için

/drawable-xxhdpi ekstra-ekstra yüksek density ekranlar için

/drawable-xxxhdpi ekstra-ekstra-ekstra yüksek density ekranlar için

layout örneği:

<ImageView
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:src="@drawable/example_img" />

kotlin kodu:

val drawable: Drawable? = ResourcesCompat.getDrawable(resources, R.drawable.example_img, null)

java kodu:

Resources res = getResources();
Drawable drawable = ResourcesCompat.getDrawable(res, R.drawable.myimage, null);
drawable kısmına yukarıda anlattığım gibi farklı ekran boyutlarına göre konumlanan resim içeriklerini koyabileceğiniz gibi svg formatında resimleri de ekleyebilirsiniz. ( vector asset olarak ekleme )

layout

Kullanıcı arayüzü düzenini tanımladığımız ve xml uzantılı yapıların tanımlandığı yerdir.

dosya örneği : res/layout/main_activity.xml

yukarıda dosya yolunu gösterdiğimiz main_activity.xml layout u aşağıdaki şekilde R.layout yardımı ile erişiriz.

kotlin kodu:

public override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)
}

java kodu:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
 }

values

Android Resources tiplerinden olan values klasörü; dil, renk ve tema dosyalarını barındıran yerdir. Default olarak üç values dosyası içermektedir. Detaylı anlatım için bu dersimizi inceleyebilirsiniz.

  • colors.xml
  • strings.xml
  • styles.xml

raw

Android Resources tiplerinden olan raw klasörü; genellikle ses ve video gibi dosyalarının yer aldığı yerdir.

kotlin kodu:

val videoURI = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.denemevideo)

java kodu:

Uri videoURI = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.denemevideo);

mipmap

Uygulamamızın başlatıcı simgelerini ( ana ekranda gösterilen uygulama iconu ) konumlandırmamız için kullanılır.

<application android:icon="@mipmap/app_icon" android:label="@string/app_name" >
 .... 
</application>

xml

xml şeklinde önceden konumlandırma yapmak istediğimiz değerleri barındırır. örneğin tab yapısı kullanıyorsunuz ve o tabların ismi, iconu ve çeşitli özellikleri mevcut diyelim ki <tabs> xml yapısını kullanarak bu klasörde konumlandırıp kolaylıkla kullanabilirsiniz.

menu

Android Resources tiplerinden olan menu klasörü ; adından da anlaşılacağı gibi menu içerisinde yer alması gereken değerlerin tutulduğu yerdir.

dosya örneği : res/menu/example_menu.xml

example_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/item1"
          android:title="@string/item1"
          android:icon="@drawable/group_item1_icon"
          app:showAsAction="ifRoom|withText"/>
    <group android:id="@+id/group">
        <item android:id="@+id/group_item1"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item1"
              android:icon="@drawable/group_item1_icon" />
        <item android:id="@+id/group_item2"
              android:onClick="onGroupItemClick"
              android:title="@string/group_item2"
              android:icon="@drawable/group_item2_icon" />
    </group>
    <item android:id="@+id/submenu"
          android:title="@string/submenu_title"
          app:showAsAction="ifRoom|withText" >
        <menu>
            <item android:id="@+id/submenu_item1"
                  android:title="@string/submenu_item1" />
        </menu>
    </item>
</menu>

kotlin kodu:

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.example_menu, menu)
    return true
}

java kodu:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

font

Uygulamamızda kullandığımız yazı tipleri için fontların tutulduğu yerdir. Bu fontların uzantıları .ttf, .otf, .ttc olabilir.

dosya örneği : res/font/font_name.xml

font_name.xml

<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>

layout kullanımı:

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:fontFamily="@font/font_name"/>

Font kullanımı ile ilgili detaylı derslerimize göz atmak isterseniz bu linkleri inceleyebilirsiniz.  font kullanımı ve indirilebilir font kullanımı.

Evet arkadaşlar Android Resources Dosyalarını sizlere detaylıca anlatmaya çalıştım. Umarım hepiniz için faydalı olmuştur. Temel olarak resources yapılarının ne işe yaradığını anlattım. her bir resources konusuna ilerleyen derslerde detaylıca yer vereceğiz.

Sıfırdan android dersleri için tıklayınız.

Mobilhanem.com üzerinden anlattığımız android uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.

Bir daha ki dersimizde görüşmek dileğiyle..

10

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

2 Yorum

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?