Pertanyaan Android - menonaktifkan mode lansekap?


Bagaimana saya bisa menonaktifkan mode lansekap untuk beberapa tampilan di aplikasi Android saya?


796
2018-02-24 15:29


asal


Jawaban:


Menambahkan android:screenOrientation="portrait" ke aktivitas di AndroidManifest.xml. Sebagai contoh:

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />

EDIT: Karena ini telah menjadi jawaban yang sangat populer, saya merasa sangat bersalah karena memaksa potret jarang menjadi solusi yang tepat untuk masalah yang sering diaplikasikan.
Peringatan utama dengan potret paksa:

  • Ini tidak membebaskan Anda karena harus memikirkan aktivitas peristiwa siklus hidup atau benar menyimpan / memulihkan negara. Ada banyak sekali hal-hal selain rotasi aplikasi yang dapat memicu aktivitas perusakan / rekreasi, termasuk hal-hal yang tidak dapat dihindari seperti multitasking. Tidak ada jalan pintas; belajar menggunakan bundel dan retainInstance fragmen.
  • Perlu diingat bahwa tidak seperti pengalaman iPhone yang cukup seragam, ada banyak perangkat di mana potret bukanlah orientasi yang jelas populer. Ketika pengguna berada di perangkat dengan keyboard atau bantalan game perangkat keras a la Droid 1-4, Xperia Play, atau Nvidia Shield, memaksa potret dapat membuat aplikasi Anda menjadi kerumitan penggunaan besar (terutama di Shield). Jika aplikasi Anda tidak memiliki kasus penggunaan yang sangat spesifik yang akan mengarah pada pengalaman negatif langsung untuk mendukung orientasi lain, Anda mungkin tidak perlu memaksakan lanskap. Saya sedang berbicara tentang hal-hal seperti, "ini adalah aplikasi remote control untuk telepon dengan blaster IR hanya pada satu sisi perangkat," atau "ini adalah aplikasi kasir untuk satu model tablet tertentu yang selalu digunakan dalam perbaikan dock perangkat keras. "

Jadi sebagian besar aplikasi hanya membiarkan sensor ponsel, perangkat lunak, dan konfigurasi fisik membuat keputusan sendiri tentang bagaimana pengguna ingin berinteraksi dengan aplikasi Anda. Beberapa kasus yang mungkin masih ingin Anda pikirkan, jika Anda tidak puas dengan perilaku default sensor orientasi dalam kasus penggunaan Anda:

  • Jika yang menjadi perhatian utama Anda adalah orientasi yang tidak disengaja, perubahan aktivitas pertengahan yang menurut Anda sensor dan perangkat lunak perangkat tidak akan mengatasi dengan baik (misalnya, dalam permainan berbasis tilt) pertimbangkan untuk mendukung lanskap dan potret, tetapi menggunakan nosensor untuk orientasi. Hal ini memaksa lanskap pada kebanyakan tablet dan potret pada sebagian besar ponsel, tetapi saya tetap tidak akan merekomendasikan ini untuk sebagian besar aplikasi "normal" (beberapa pengguna hanya ingin mengetikkan softkeyboard lanskap di ponsel mereka, dan banyak pengguna tablet membaca potret - dan Anda harus membiarkannya).
  • Jika kamu masih perlu memaksakan potret untuk beberapa alasan, sensorPortrait mungkin lebih baik daripada portrait untuk Android 2.3+; ini memungkinkan untuk potret terbalik, yang sangat umum dalam penggunaan tablet.

1401
2018-02-24 17:04



Saya tidak sadar akan hal itu AndroidManifest.xml beralih file sampai membaca posting ini, jadi di aplikasi saya, saya menggunakan ini sebagai gantinya:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

97
2017-10-18 14:53



Tambahkan ini android:screenOrientation="portrait" dalam file manifes Anda di mana Anda menyatakan aktivitas Anda seperti ini

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

Jika Anda ingin melakukan menggunakan kode java coba

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

sebelum kamu menelepon setContentView metode untuk aktivitas Anda di onCreate().

Semoga ini membantu dan mudah dimengerti untuk semua ...


32
2017-09-27 09:47



Banyak jawaban di sini yang menyarankan untuk digunakan "portrait"di file AndroidManifest.xml Anda. Ini mungkin tampak seperti solusi yang baik - tetapi seperti dicatat dalam dokumentasi, Anda memilih perangkat yang mungkin hanya memiliki lanskap. Anda juga memaksa perangkat tertentu (yang bekerja terbaik dalam lanskap) untuk masuk ke potret, tidak mendapatkan orientasi yang tepat.

Saran saya adalah menggunakan "nosensor" sebagai gantinya. Ini akan membuat perangkat menggunakan orientasi pilihan defaultnya, tidak akan memblokir pembelian / unduhan apa pun di Google Play, dan akan memastikan sensor tidak mengacaukan permainan (NDK, dalam kasus saya).


19
2017-08-21 14:41



Jika Anda ingin pengaturan pengguna,

maka saya akan merekomendasikan setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

Anda dapat mengubah pengaturan dari menu pengaturan.

Saya memerlukan ini karena pengatur waktu saya harus sesuai dengan apa yang ada di layar, dan memutar layar akan menghancurkan aktivitas saat ini.


9
2018-02-10 04:46



Cukup tambahkan Seperti Baris ini di Manifes Anda

android: screenOrientation = "potret"

<manifest
    package="com.example.speedtestmeter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            android:name="ComparisionActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:name="GaugeView"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

        <activity
            android:name="Resultactivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

    </application>

</manifest>   

8
2018-02-05 09:30



Cukup tambahkan atribut ini di tag aktivitas Anda.

 android:screenOrientation="portrait"

5
2017-10-01 07:00



kamu harus berubah android:screenOrientation="sensorPortait" di AndroidManifest.xml


5
2018-01-03 06:04



Gunakan ini di onCreate () dari Activity

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

5
2018-05-06 09:59



Jika Anda tidak ingin melalui kerumitan penambahan orientasi dalam setiap entri aktivitas nyata yang lebih baik, buat kelas BaseActivity (mewarisi 'Activity' atau 'AppCompatActivity') yang akan diwariskan oleh setiap aktivitas aplikasi Anda, bukan 'Activity 'atau' AppCompatActivity 'dan cukup tambahkan potongan kode berikut dalam BaseActivity Anda:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}

5
2018-04-22 17:51