Pembaruan 2017: {"orientation": "portrait"}
Saat ini banyak panduan resmi React Native seperti ini yang merekomendasikan penggunaan Expo saat membuat aplikasi React Native jadi selain jawaban yang ada, saya juga akan menambahkan solusi khusus Expo yang perlu diperhatikan karena berfungsi untuk iOS dan Android dan Anda hanya perlu setel sekali tanpa perlu mengacaukan konfigurasi XCode, AndroidManifest.xml, dll.
Mengatur orientasi pada waktu pembuatan:
Jika Anda membuat aplikasi React Native dengan Expo, Anda dapat menggunakan kolom orientation
di app.json
file Anda - misalnya:
{
"expo": {
"name": "My app",
"slug": "my-app",
"sdkVersion": "21.0.0",
"privacy": "public",
"orientation": "portrait"
}
}
Dapat disetel ke "portrait"
, "landscape"
atau "default"
yang artinya rotasi otomatis tanpa kunci orientasi.
Mengatur orientasi saat runtime:
Anda juga dapat mengganti pengaturan itu pada waktu proses dengan menjalankan, misalnya:
Expo.ScreenOrientation.allow(Expo.ScreenOrientation.Orientation.LANDSCAPE);
dimana argumennya bisa:
ALL
- Semua 4 kemungkinan orientasi
ALL_BUT_UPSIDE_DOWN
- Semua kecuali potret terbalik, bisa jadi semua 4 orientasi pada perangkat Android tertentu.
PORTRAIT
- Orientasi potret, bisa juga potret terbalik pada perangkat Android tertentu.
PORTRAIT_UP
- Potret terbalik saja.
PORTRAIT_DOWN
- Hanya potret terbalik.
LANDSCAPE
- Semua orientasi lanskap.
LANDSCAPE_LEFT
- Hanya lanskap kiri.
LANDSCAPE_RIGHT
- Pemandangan yang tepat saja.
Mendeteksi rotasi:
Jika Anda mengizinkan lebih dari satu orientasi, Anda dapat mendeteksi perubahan dengan mendengarkan change
kejadian pada Dimensions
objek:
Dimensions.addEventListener('change', (dimensions) => {
// you get:
// dimensions.window.width
// dimensions.window.height
// dimensions.screen.width
// dimensions.screen.height
});
atau Anda juga bisa mendapatkan dimensi kapan saja dengan Dimensions.get('window')
dan Dimensions.get('screen')
seperti ini:
const dim = Dimensions.get('window');
// you get:
// dim.width
// dim.height
atau:
const dim = Dimensions.get('screen');
// you get:
// dim.width
// dim.height
Ketika Anda mendengarkan acara, Anda mendapatkan keduanya window
dan screen
pada saat yang sama sehingga Anda mengaksesnya secara berbeda.
Dokumentasi:
Untuk info lebih lanjut lihat: