Android Uygulamasının Yönünü Telefonlarda Dikey ve Tabletlerde Yatay Olarak Nasıl Kilitleyebilirim?


83

Kullanıcı cihazı döndürdüğünde yönünün yatay moda geçmesini istemediğim bir Android uygulaması geliştiriyorum. Ayrıca, kilitli yönün telefonlarda dikey mod ve tabletlerde yatay mod olmasını istiyorum. Bu başarılabilir mi, evetse nasıl? Teşekkürler.


2
@CommonsWare: Uygulamamın, telefonlarda potrait modunda çok daha verimli bir şekilde dolaşan uzun listeli menüler var.
Ankit Rawat

3
Ardından, kullanıcılarınızın cihazlarını herhangi bir yönde kullanma becerisine saygı duyan daha iyi bir GUI tasarımı bulun.
CommonsWare

Yanıtlar:


157

Dosyanızdaki etkinlik öğesinin içinde aşağıdaki özelliği tanımlamanız yeterlidir AndroidManifest.xml. Oryantasyonunuzu portre ile sınırlayacaktır.

android: screenOrientation = "portre"

Misal:

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

Bunun tüm uygulamaya uygulanmasını istiyorsanız, aşağıdaki özelliği uygulama etiketinin içinde şu şekilde tanımlayın:

        <application>
         android:screenOrientation="sensorPortrait"
        </application>

Ek olarak, Eduard Luca'nın aşağıdaki yorumuna screenOrientation="sensorPortrait"göre, 180 derece döndürmeyi etkinleştirmek istiyorsanız da kullanabilirsiniz .


21
Veya sensorPortraitkullanıcının ekranı 180 derece döndürebilmesini istiyorsanız :)
Eduard Luca

44

Sen eklemek zorunda android:screenOrientation="portrait"Gözlerinde farklı yönergeyi AndroidManifest.xml. Bu, <activity>etiketinizde yapılacaktır.

Ek olarak, Android Geliştiricileri kılavuzu şunları belirtir:

[...] ayrıca uygulamanızın öğeyle dikey veya yatay yönlendirme gerektirdiğini de açıkça beyan etmelisiniz. Örneğin <uses-feature android:name="android.hardware.screen.portrait" />,.


6
İyi uygulama teklifi için 1 ve ... doğru olduğunu ve ilk yayınlanmıştır gibi bu, kabul cevabı olmalı çünkü
Eduard Luca

7
Küresel bir yol var mı?
Tyler Pfaff

21

Sorununuzu tamamen çözmeyen bir cevabı kabul ettiğinizi görebiliyorum:

android:screenOrientation="portrait" 

Bu, uygulamanızı hem telefonlarda hem de tabletlerde portre olmaya zorlar.

Şunları kullanarak uygulamanın cihazın "tercih edilen" yönünde zorlanmasını sağlayabilirsiniz:

android:screenOrientation="nosensor"

Bu, uygulamanızı çoğu telefonda portre yapmaya ve tabletlerde yatay konuma zorlamanıza neden olur. Manzara modu için tasarlanmış tuş takımına sahip birçok telefon var. Uygulamanızı portre yapmaya zorlamak, onu bu tür cihazlarda neredeyse kullanılamaz hale getirebilir. Android son zamanlarda diğer cihaz türlerine de geçiyor. Cihazın tercih edilen yönü seçmesine izin vermek en iyisidir.



11

Belki .. programlı olarak tablet veya telefon olduğunu belirlemeniz gerekir ... İlk önce cihazın telefon veya tablet olduğunu kontrol edin

Cihazın akıllı telefon mu yoksa tablet mi olduğunu belirleyin.

Tablet veya Telefon - Android

Sonra......

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

Merhaba @Bhavesh, Android 9 mobil için çalışmıyor.
Manikandan K

tablet olup olmadığını nasıl belirleyebiliriz ... bunu açıklamadınız ...
Abdul Wahid

Düzenlenmiş cevabı görebilirsiniz. Cihazın akıllı telefon veya tablet olup olmadığını nasıl belirleyeceğimi dahil ettim?
Bhavesh Hirpara

3
<activity android:name=".yourActivity"
          android:screenOrientation="portrait" ... />

ana aktiviteye ekle ve ekle

android:configChanges="keyboardHidden"

programınızın klavye çağrıldığında mod değiştirmesini önlemek için.


1

Aktivite Etiketi altındaki Manifest dosyasında Ekran yönünü dikey olarak ayarlayın.


0
android:screenOrientation="locked"

içinde <application>tüm uygulama için <activity>gerçek etkinlik için


0

Aktivite Etiketi altındaki Manifest dosyasında Ekran yönünü dikey olarak ayarlayın.

İşte örnek

Her Faaliyete girmeniz gerekir

Aktiviteye Aşağıdaki Satırları Ekleyin

portre için

android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"

manzara için

android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"

İşte MainActivity Örneği

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="org.thcb.app">
 
    <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=".MainActivity"
            android:screenOrientation="portrait"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

<activity android:name=".MainActivity2"
            android:screenOrientation="landscape"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


-1

Sadece ekle:

android:screenOrientation="portrait"

" AndroidManifest.xml " içinde:

<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.