Android Screen Orientation

Merhaba Arkadaşlar,
Mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız Android Eğitimleri yazı serimizde bu dersimizde Android Screen Orientation ile devam ediyoruz. Nedir bu Screen Orientation kavramı ,ne işe yarar şimdi incelemeye başlayalım.

Screen Orientation da uygulamamızın farklı ekran yönlendirme seçeneklerine ne şekilde tepki vereceğinizi belirleyebiliriz. İlgili Activity sayfamıza ekran yönlendirmesini AndroidManifest.xml den yapabiliriz. Şimdi yönlendirme seçeneklerini inceleyelim.

Örnek olması açısından Android Studio da bir örnek oluşturuyoruz. MainActivity sınıfımızın xml layout kısmı aşağıdaki gibidir.

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:background="#cccc"
        android:layout_centerInParent="true"
        android:textColor="#000"
        android:text="Screen Orientation" />
</RelativeLayout>

Android Screen Orientation Türleri

  • android:screenOrientation=”portrait”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini portrait olarak belirledik bu şekilde xml layout dizaynı hep dikey şekilde gözükecektir. Ekran yan çevirilse dahi görüntü değişmeyecektir.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ekran çıktısı:

  • android:screenOrientation=”landscape”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini landscape olarak belirledik bu şekilde xml layout dizaynı hep yatay şekilde gözükecektir.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="landscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ekran çıktısı:

  • android:screenOrientation=”userPortrait”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini userPortrait olarak belirledik bu şekilde xml layout dizaynı ekranı sadece 180° çevirdiğiniz kadar dönecektir. Api Level 18 ile birlikte kullanılmaya başlandı.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="userPortrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ekran çıktısı:

ilk çalıştığı anda ekran görüntüsü

180°  ekranı çevirdiğimizde ekran görüntüsü

 

  • android:screenOrientation=”reversePortrait”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini reversePortrait olarak belirledik bu şekilde xml layout dizaynı Portrait ekran yönlendirmesinin tam tersi olarak çalışmaktadır.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="reversePortrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ekran çıktısı:

  • android:screenOrientation=”reverseLandscape”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini reverseLandscape olarak belirledik bu şekilde xml layout dizaynı landscape ekran yönlendirmesinin tam tersi olarak çalışmaktadır.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="reverseLandscape">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

 

 

  • android:screenOrientation=”unspecified”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini unspecified olarak belirledik bu şekilde xml layout dizaynı default olarak bir ekran yönlendirme değeri alır yani sistem yönü kendi seçer. Android cihazlar arası farklılık gösterebilir.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="unspecified">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

  • android:screenOrientation=”sensor”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini sensor olarak belirledik bu şekilde xml layout dizaynı  kullanıcının cihazı nasıl tuttuğuna bağlı olarak değişir. Cihazın sensörü tarafından da bu haraket yönü belirlenir. Fakat bazı cihazlar 4 yönü de desteklemeyebilir işte o zaman fullSensor kullanmak gerekir.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="sensor">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

  • android:screenOrientation=”fullSensor”

Aşağıdaki kod yapısına baktığımızda MainActivity sınıfının ekran yönlendirmesini fullSensor olarak belirledik bu şekilde xml layout dizaynı cihazın 4 yöne de haraketi destekler. Bazı cihazlar reversePortrait ve reverseLandscape olarak kullanılmaya çalışıldığında o yönlendirme haraketlerini desteklemeyebilir fakat fullSensor kullanırsanız bahsettiğim gibi bütün haraket yönlerini desteklemiş olursunuz.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.screenorientation">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name="com.mobilhanem.screenorientation.MainActivity" android:screenOrientation="fullSensor">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

 

Gördüğünüz gibi bir çok ekran yönlendirme özelliği mevcut fakat özellikle sensor başta olmak üzere bir çoğu oyun geliştirme de kullanılmaktadır, mobil uygulama geliştirirken daha çok portrait ve landscape tercih edilmektedir.

Evet arkadaşlar Android Screen Orientation aşamalarını sizlere detaylıca anlatmaya çalıştım. Ekran yönlendirmeleri çoğu zaman kullandığımız fakat daha detayına girip incelemediğimiz bir konu. Umarım hepiniz için faydalı olmuştur.

Tüm Android Ders, Proje ve Kaynak Kodlar 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..

2

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)

5 Yorum

  • merhaba öncelikle iyi gunler dilerim
    benim bi sorum olcaktı yardımcı olabilirseniz sevinirim
    android studio ortamında farklı aktivity uygulamalarını aynı ekranda gosterebilirmiyiz. yani diyelımki alt kısımda butonlar olcak ben onlara tıkladıkca ekranın orta kısmında değişim olcak butonlar sabit kalacak linear layout yapısı ile felan mı alakalı yardımcı olabilirseniz sevinirim

    • merhaba, aynı ekranda birden fazla activity gösteremezsiniz. Android de Fragment konusunu araştırırsanız eğer kolayca bu dediğinizi gerçekleştirirsiniz iyi günler.

  • merhabalar hocam fragmetler için bu olayı nasıl uygulayabiliriz. onların activity dosyaları yok

    • fragment tek başlarına kullanılmazlar bir activitye ihtiyaç duyarlar bu yüzden de kullanacağın fragment zaten activity içinde tanımlı olan bir boş layout a geleceği için activity de uygularsın.

  • Merhaba webviev uygulamasını ilk açtığımda telefonu çevirdigimde ekran istenilen yönlerde dönüyor.Fakat bir video açtığımda tam ekrana alınca sabit yatay tek yönde video gösteriyor.Hicbir yöne video dönmüyor.Lütfen yardımcı olurmusunuz
    yukarda yazılanları denedım olmadı

Haftalık Bülten

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