Android’de Farklı Ekran Boyutları ile Nasıl Çalışılır ?

UMUTCAN SAHIN
5 min readJul 5, 2023

--

Arkadaşlar, selamlar. Bugün XML tarafında oluşturduğumuz ekranların farklı boyutları desteklemesi için kullandığımız birkaç yoldan bahsedeceğim.

Çoğu geliştiricinin başına gelmiştir. Tasarladığı ekran kendi telefonunda gayet güzel ve düzenli bir şekilde gözükürken başka bir telefonda denediğinde ekran içerisindeki view’ların yerleride değişmeler veya daha kötüsü bazı view’ların ekrana sığmadı ve bu yüzden ekranda görünmediği durumlar olmuştu.

Bunun sebebi, view’lara sabit değerler vermemizdir ve bu değerleri verirken o an üzerinde çalıştığımız emülatörün boyutuna göre ayarlama yaparız. Fakat farklı bir emülatörde verdiğimiz değerler büyük veya küçük gelebilir. Bu sorunu çözmek için destekleyeceğimiz ekranlar için bir “dimens” dosyası açarız ve ekranların boyutuna göre dosya içerisine view’ların boyut özellikleri ekleyebiliriz.

Bu yukarıda anlattıklarımdan önce, stabil bir ekran için mümkün olduğunca sabit değerler vermekten kaçınalım. Ancak, sabit değer verilmesi gerekiyorsa, bahsettiğim yolları kullanabiliriz.

Hemen örnekler üzerinden devam edelim:))

Farklı ekranlar için dimens.xml’lerini oluşturalım.

  1. Adım

res > New > Android Resource File’ı açalım.

2.Adım

Açılan pencereden ‘file name’ dimens ismi verilmeli. Bu isim tüm ekran boyutları için aynı olmalı. ‘Directory name’ ise values olarak tanımlanmalı ve destekleyeceğimiz piksel yoğunluğunun ismini vererek belirlenmelidir.

Diğer ekranlar için aynı adımları takip ederek iki adet daha dimens oluşturalım.

Bu adımları destekleyeceğiniz ekran sayısı kadar yapmanız gerekmektedir. Ancak, göstermek amacıyla sadece bu üç ekran için ekleyeceğim.

En son görünüm aşağıdaki gibi olmalı.

Şimdi farklı ekranlar için değerler oluşturalım. Burada görsellerde düzgün çalıştığını göstermek için birbirinden farklı değerler vereceğim. Bu sayede farklı ekranlarda istediğimiz tasarımı yapabileceğimizi anlayacağız.

Siz burada her ekranda benzer bir kullanıcı deneyimi sunmak için yakın değerler verebilirsiniz.

Sırada ise bu değerleri kullanarak bir view oluşturmada.

   <TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="DENEME 1 2 3 "
android:background="#CDDC39"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="@dimen/text_size"
android:padding="@dimen/padding"
android:layout_marginTop="@dimen/margin_top"
android:layout_marginStart="@dimen/margin_start"
android:layout_marginEnd="@dimen/margin_end"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

Atadığımız dimens değerleri aynı isim ile tanımladığımız için uygulama hangi dimens.xml’i kullanacağını anlıyor ve oradaki değerleri getiriyor.

xxxhdpi piksel yoğunluğuna sahip bir cihazda görünüm nasıl olduğuna bakalım.

xxhdpi piksel yoğunluğuna sahip bir cihazda görünüm nasıl olduğuna bakalım.

xhdpi piksel yoğunluğuna sahip bir cihazda görünüm nasıl olduğuna bakalım.

Farklı ekran boyutlarında çalışmanın bir diğer yolu ise bir layout’u destekleyeceğimiz ekran sayısı kadar tekrar yazmamız gerektiğidir. Bence yukarıdaki yöntem daha kısa sürüyor, ancak ihtiyaç doğrultusunda bu yöntem de kullanılabileceği için bir örnekde bu kullanım için vereceğim.

  1. Adım

Farklı ekranlar için tasarlayacağımız layout’dan her ekran için bir tane tasarlamamız gerekir.

“Layout > New > Layout Resource File” seçeneklerini kullanarak layout oluşturma penceresini açalım.

2. Adım

Farklı ekran boyutları için kullanacağımız layout ile aynı isme sahip yeni layout’ları oluşturalım, ancak directory name vereceğimiz isim “layout” olacak ve hangi piksel yoğunluğunda ise o ismi ekleyip yazacağız.

Son görünüm aşağıdaki gibi olması lazım.

Şimdi her layout için view’ları tanımlayabiliriz.

xxhdpi Layout’u için

<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="DENEME xxhdpi "
android:background="#E91E63"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="16sp"
android:padding="16dp"
android:layout_marginTop="16dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

xxhdpi Layout’u için

<TextView
android:id="@+id/textView"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="DENEME xxxhdpi "
android:background="#CDDC39"
android:textColor="@color/black"
android:textStyle="bold"
android:textSize="36sp"
android:padding="50dp"
android:layout_marginTop="100dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>

Bu anlattığım yöntemleri kullanarak bir yatay modunda ekranını tasarlayabiliriz.

Ayrıca, tasarlamak istediğimiz ekranın genişliğine göre de bu yöntemi kullanabiliriz. Örneğin, dimens-sw600dp kullanımı ile 600dp ve üzeri ekranlar için ekran tasarlayabiliriz.

sw600dp->smallest withd 600dp

  • ldpi (Low DPI): Düşük piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi günümüzde pek kullanılmamaktadır.
  • mdpi (Medium DPI): Orta düzey piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi genellikle 320x480 piksel çözünürlüğe sahip ekranlarda kullanılır.
  • hdpi (High DPI): Yüksek piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi genellikle 480x800 piksel çözünürlüğe sahip ekranlarda kullanılır.
  • xhdpi (Extra High DPI): Ekstra yüksek piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi genellikle 720x1280 piksel veya daha yüksek çözünürlüğe sahip ekranlarda kullanılır.
  • xxhdpi (Extra Extra High DPI): Ekstra ekstra yüksek piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi genellikle 1080x1920 piksel veya daha yüksek çözünürlüğe sahip ekranlarda kullanılır.
  • xxxhdpi (Extra Extra Extra High DPI): En yüksek piksel yoğunluğuna sahip cihazları temsil eder. Bu yoğunluk seviyesi genellikle 1440x2560 piksel veya daha yüksek çözünürlüğe sahip ekranlarda kullanılır.

veeeeeeeeeeeeeeeeeeeeeeeeeeeee Son

--

--