Android uygulamamın sadece portre modunda çalışmasını istiyorum?


359

Android uygulamamın sadece portre modunda çalışmasını istiyorum? Bunu nasıl yapabilirim?

Yanıtlar:


779

Manifest'te bunu tüm etkinlikleriniz için ayarlayın:

<activity android:name=".YourActivity"
    android:configChanges="orientation"
    android:screenOrientation="portrait"/>

Açıklamama izin ver:

  • İle android:configChanges="orientation"Aşağıdaki videoyu yönelim değişikliklerinin sorumlu olacağını Android'i söyle.
  • android:screenOrientation="portrait" varsayılan yönlendirme modunu ayarlarsınız.

50
Uygulamadaki TÜM etkinlikler için "küresel" bir yönelim belirlesek iyi olmaz mıydı? Her etkinliğe "portre" özelliğini kopyalamak / yapıştırmaktan başka seçeneğimiz yok gibi görünüyor ...
Eduardo Coelho

63
Bu sette için yeterliandroid:screenOrientation="portrait"
Till

11
@EduardoCoelho aslında bir temel sınıf yapabilirsiniz PortraitActivityve onCreate çağrıda setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)Bunu genişleten tüm etkinlikler
dönmeyecek

1
@Twinone: Farklı faaliyetler Activity, bir faaliyetin ListActivitydiğerinden basitçe uzanırken olduğu gibi farklı alt sınıflarından miras almak istediğinde Activity?
RestInPeace

3
@RestInPeace Evet, iyi bir nokta. Ama bu benim fikrim yanlış değil, sadece Java çoklu mirası desteklemiyor :)
Twinone

57

Android Manifest Dosya, senin için niteliğini koymak <activity>olduğunuandroid:screenOrientation="portrait"


2
eklememe izin verin: Android Sudio 3.6'dan android kullanmanız gerekir: screenOrientation = "fullSensor" veya android: screenOrientation = "belirtilmemiş". fullSensor "Döndür" seçeneğini AÇIK duruma getirdiğiniz anlamına gelir, aksi takdirde telefonu hareket ettirdiğinizde yönü değiştirmez. belirtilmemiş AÇIK Döndür kapalıysa, yalnızca bu yönde kalacaktır ve eğer değilse, telefonu taşıdığınız yere göre yönü değiştirecektir.
Kirguduck

24

İki yol var,

  1. Bildirim android:screenOrientation="portrait"Dosyasındaki her Etkinlik için ekleyin
  2. this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);Her bir java dosyasına ekleyin .

14
İkinci seçenek, Dikey'de başlatıldığında etkinliğinizi yeniden başlatacak korkunç yan etkiye sahiptir.
Joakim

4

manifest'te:

<activity android:name=".activity.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>

veya: MainActivity'de

@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Anladım app/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.. xmlns:tools="http://schemas.android.com/tools"Kök öğeye eklemek sorunu çözer
Żabojad

3

Eski yazı biliyorum. Yönünüzü değiştirebilse veya takas etse bile uygulamanızı her zaman portre modunda çalıştırmak için (örneğin tabletlerde) Dikey ve yatay konumun nasıl olduğunu bilmenize gerek kalmadan cihazı doğru yönde ayarlamak için kullanılan bu işlevi tasarladım. özellikler cihazda düzenlenmiştir.

   private void initActivityScreenOrientPortrait()
    {
        // Avoid screen rotations (use the manifests android:screenOrientation setting)
        // Set this to nosensor or potrait

        // Set window fullscreen
        this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        DisplayMetrics metrics = new DisplayMetrics();
        this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);

         // Test if it is VISUAL in portrait mode by simply checking it's size
        boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels ); 

        if( !bIsVisualPortrait )
        { 
            // Swap the orientation to match the VISUAL portrait mode
            if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
             { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
            else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
        }
        else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }

    }

Tıkır tıkır çalışıyor!

DİKKAT: this.activityEtkinliğinize göre değiştirin veya ana etkinliğe ekleyin ve this.activity;-) kaldırın


-5

kullanırım

 android:screenOrientation="nosensor"

Yukarıdan aşağıya portre modunu desteklemek istemiyorsanız faydalıdır.


bu benim düşündüğüm şeyi yaparsa, ekranı gerçekten yapmak isteyebileceğiniz resme zorlamaz.
Lassi Kinnunen

neden sadece bu yorumu kaldırmıyorsun! mantıklı değil
Alexander Zaldostanov

Android Manifest Dosyasında sadece <aktivite> o android için öznitelik ekleyin: screenOrientation = "portre"
Avinash Shinde

Cevabınız için teşekkürler, bu benim için yararlı.
Md. Shofiulla
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.