Melihat AndroidManifest.xml ( tautan ), di baris 9:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
Baris ini menentukan screenOrientation
lansekap sebagai, tetapi penulis melangkah lebih jauh dalam mengesampingkan perubahan orientasi layar apa pun configChanges="orientation|keyboardHidden"
. Ini menunjuk ke fungsi yang ditimpa di VncCanvasActivity.java.
Jika Anda melihat VncCanvasActivity, on line 109 adalah fungsi yang diganti:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
Penulis secara khusus memberikan komentar untuk mengabaikan perubahan keyboard atau orientasi.
Jika Anda ingin mengubah ini, Anda dapat kembali ke file AndroidManifest.xml yang ditunjukkan di atas, dan ubah baris ke:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
Ini harus mengubah program untuk beralih dari potret ke lanskap saat pengguna memutar perangkat.
Ini mungkin berhasil, tetapi mungkin mengacaukan tampilan GUI, tergantung pada bagaimana tata letak dibuat. Anda harus bertanggung jawab untuk itu. Juga, tergantung pada bagaimana aktivitas dikodekan, Anda mungkin memperhatikan bahwa ketika orientasi layar diubah, nilai-nilai yang diisi ke dalam setiap kotak input menghilang. Ini juga mungkin harus ditangani.
configChanges
atribut itu dibutuhkan? Tampaknya berfungsi pada ponsel non-keyboard saya tanpa itu ... Dalam situasi apa orientasi akan berubah menjadi potret jika Anda memilikiscreenOrientation="landscape"
tetapi mengabaikannyaconfigChanges
?If your application targets API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), then you should also declare the "screenSize" configuration, because it also changes when a device switches between portrait and landscape orientations.
Anda dapat mengatur data yang sama dalam kode java Anda juga.
Nilai-nilai lain pada ActivityInfo akan memungkinkan Anda mengaturnya kembali ke sensor-driven atau portrait yang dikunci. Secara pribadi, saya suka mengaturnya ke sesuatu di Manifest seperti yang disarankan dalam jawaban lain untuk pertanyaan ini dan kemudian mengubahnya nanti menggunakan panggilan di atas di Android SDK jika ada kebutuhan.
sumber
If the activity is currently in the foreground or otherwise impacting the screen orientation, the screen will immediately be changed (possibly causing the activity to be restarted)
Di saya
OnCreate(Bundle)
, saya biasanya melakukan hal berikut:sumber
Anda dapat menentukan orientasi suatu aktivitas dalam manifes. Lihat di sini .
sumber
Dalam manifes:
Dalam aktivitas Anda:
sumber
Berikut ini adalah kode yang saya gunakan untuk menampilkan semua aktivitas dalam mode lansekap:
sumber
Solusi cepat dan sederhana untuk file AndroidManifest.xml, tambahkan berikut ini untuk setiap aktivitas yang ingin Anda paksa ke mode lansekap:
sumber
Ini berfungsi untuk Xamarin. Android. Di OnCreate ()
sumber
Itu dia!! Lama menunggu perbaikan ini.
Saya memiliki masalah Android lama tentang memulai dua kali aktivitas yang memerlukan mode lansekap (terprogram):
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Sekarang Android membuat mode Landscape di awal.
sumber
Arslan, mengapa Anda ingin memaksakan orientasi secara tata bahasa, meskipun sudah ada cara dalam manifes
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
sumber
Melakukannya dalam kode adalah IMO salah dan bahkan lebih jika Anda memasukkannya ke dalam onCreate. Lakukan dalam manifes dan "sistem" mengetahui orientasi dari awal aplikasi. Dan meta jenis ini atau "pedoman" tingkat atas HARUS ada dalam manifes. Jika Anda ingin membuktikannya pada diri sendiri, setel istirahat di onCreate Activity. Jika Anda melakukannya dalam kode di sana ia akan dipanggil dua kali: dimulai dalam mode Portrait kemudian beralih ke Lansekap. Ini tidak terjadi jika Anda melakukannya di manifes.
sumber
Untuk Android 4.0 (Ice Cream Sandwich) dan yang lebih baru, saya perlu menambahkan ini, di samping
landscape
nilainya.Hanya menggunakan
keyboardHidden|orientation
masih akan menghasilkan kebocoran memori dan rekreasi kegiatan saya saat menekan tombol daya.sumber
orientation|screensize
tidak cukup dalam semua kasus. Itu akan autorotate kembali ke potret.Gunakan ActivityInfo (android.content.pm.ActivityInfo) di metode onCreate Anda sebelum memanggil metode setLayout seperti ini
sumber
gunakan Hanya
android: screenOrientation = "potret" alat: abaikan = "LockedOrientationActivity"
sumber
Tambahkan Garis Berikut dalam Aktivitas
Anda harus masuk dalam setiap Aktivitas
untuk lansekap
untuk potret
Berikut Contoh MainActivity
sumber
Tekan
CTRL+F11
untuk memutar layar.sumber