Bagaimana cara mengaturnya sehingga aplikasi berjalan dalam mode potret saja? Saya ingin mode lansekap dinonaktifkan saat aplikasi sedang berjalan. Bagaimana saya melakukannya secara terprogram?
201
Anda dapat menentukan android:screenOrientation="portrait"
untuk setiap aktivitas dalam file manifest.xml Anda. Anda tidak dapat menentukan opsi ini pada application
tag.
Opsi lain adalah melakukannya secara terprogram, misalnya dalam Activity
kelas dasar:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Opsi terakhir adalah melakukannya dengan pendengar siklus aktivitas yang hanya tersedia sejak Android 4.0 (API 14+). Semuanya terjadi di Application
kelas khusus :
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter
hanya kelas pembantu yang harus Anda buat yang akan menjadi implementasi kosong ActivityLifecycleCallbacks
(jadi Anda tidak perlu menimpa setiap dan setiap metode dari antarmuka itu saat Anda hanya membutuhkannya).
Ya, Anda dapat melakukan ini secara terprogram dan untuk semua aktivitas Anda dengan membuat AbstractActivity yang diperluas oleh semua aktivitas Anda.
Aktivitas abstrak ini juga dapat digunakan untuk menu global.
sumber
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
seharusnya menjadi jawaban yang lebih baik karena ini dimaksudkan untuk meninggalkan perangkat dalam keadaan default karena beberapa perangkat tidak memiliki orientasi Portrait. Namun, 'nosensor' TIDAK bekerja untuk saya, jadi jawaban @ arcone mewakili saya.Anda dapat melakukan ini untuk seluruh aplikasi Anda tanpa harus membuat semua aktivitas Anda memperpanjang kelas dasar bersama.
Caranya adalah pertama-tama untuk memastikan Anda memasukkan
Application
subclass dalam proyek Anda. Di dalamnyaonCreate()
, dipanggil ketika aplikasi Anda pertama kali dinyalakan, Anda mendaftarkanActivityLifecycleCallbacks
objek (API level 14+) untuk menerima pemberitahuan peristiwa siklus hidup aktivitas.Ini memberi Anda kesempatan untuk mengeksekusi kode Anda sendiri setiap kali setiap aktivitas dalam aplikasi Anda dimulai (atau berhenti, atau dilanjutkan, atau apa pun). Pada titik ini Anda dapat memanggil
setRequestedOrientation()
aktivitas yang baru dibuat.sumber
Anda dapat mengatur ini di file manifes Anda ..
dan Anda juga dapat mencapai hal yang sama dengan menulis kode di file kelas Anda seperti:
sumber
Tambahkan android: screenOrientation = "portrait" ke aktivitas di AndroidManifest.xml. Sebagai contoh:
sumber
Menggunakan:
Tulis saja baris ini di file manifes aplikasi Anda di setiap aktivitas yang ingin Anda tampilkan dalam mode potret saja.
sumber
Tulis ini ke file manifes Anda, untuk setiap aktivitas:
sumber
Seperti dari panduan pengembang Android:
Jadi, dalam file AndroidManifest.xml, kita dapat meletakkan:
sumber
Menambahkan di
<preference name="orientation" value="portrait" />
bawah<widget>
di config.xml saya berfungsi untuk saya.(Solusi lain tidak berfungsi pada perangkat saya, ditimpa selama membangun atau memberikan kesalahan penghentian selama proses pembangunan.)
sumber
dalam file Manifest aktivitas mana yang ingin Anda gunakan dalam "potret" Anda harus menulis kode ini dalam tag Aktivitas
seperti ini
tetapi jika Anda ingin layar dalam lanskap gunakan kode ini seperti ini
sumber
sumber
Jika ada yang bertanya-tanya, bagaimana Anda bisa melakukan ini untuk seluruh aplikasi Anda tanpa harus membuat semua aktivitas Anda memperpanjang kelas dasar umum di Kotlin , lihat contoh di bawah ini:
dan kemudian Anda harus menambahkan kelas dasar umum Anda di AndroidManifest seperti:
sumber
Anda bisa melakukannya dengan dua cara.
android:screenOrientation="portrait"
file manifes Anda ke aktivitas yang sesuaisetRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ke aktivitas Anda dalam metode `onCreate ()sumber
Mirip dengan jawaban Graham Borland ... tetapi sepertinya Anda tidak perlu membuat kelas Aplikasi jika Anda tidak mau ... buat saja Kegiatan Dasar di proyek Anda
Dan perluas kelas ini daripada AppCompatActivity tempat Anda ingin menggunakan Mode Potrait
sumber
Untuk Pengguna Xamarin:
Jika Anda memperluas semua aktivitas Anda ke
BaseActivity
Just add:Ini akan menyelesaikan masalah. Jika Anda ingin aktivitas tertentu berada di lanskap, abaikan ini dalam
OnActivityCreated
. Sebagai:sumber
Dalam Manifest Anda ketik ini:
sumber