Saya mencoba untuk memaksa mode "portrait" untuk aplikasi saya karena aplikasi saya sama sekali tidak dirancang untuk mode "landscape".
Setelah membaca beberapa forum, saya menambahkan baris ini di file manifes saya:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:screenOrientation="portrait">
Tapi itu tidak berfungsi di perangkat saya (HTC Desire). Ini beralih dari "portrait" lo "landscape", mengabaikan garis dari file manifes.
Setelah lebih banyak forum membaca, saya mencoba menambahkan ini dalam file manifes saya:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
dan fungsi ini di kelas aktivitas saya:
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Tetapi sekali lagi, tidak berhasil.
Catat itu
ditambahkan dalam file manifes - tempat aktivitas didefinisikan.
sumber
Saya pikir
android:screenOrientation="portrait"
dapat digunakan untuk kegiatan individu. Jadi gunakan atribut itu dalam<activity>
tag seperti:sumber
Jika Anda memiliki banyak aktivitas seperti milik saya, dalam aplikasi Anda, atau jika Anda tidak ingin memasukkan kode untuk setiap tag aktivitas dalam manifes Anda dapat melakukan ini.
di kelas Basis Aplikasi Anda, Anda akan mendapatkan panggilan balik siklus hidup
jadi pada dasarnya apa yang terjadi di untuk setiap aktivitas saat membuat buat di Kelas Aplikasi dapat dipicu di sini adalah kode ..
saya harap ini membantu.
sumber
Atur mode Portrait atau Landscape , masing-masing Tambahkan baris.
Impor di bawah baris:
Tambahkan baris di bawah tepat di atas
setContentView(R.layout.activity_main);
Untuk Potret :
Untuk Lansekap :
Ini pasti akan berhasil.
sumber
Menurut dokumentasi Android, Anda juga harus sering memasukkan
screenSize
perubahan konfigurasi yang dimungkinkan.Juga, jika Anda semua termasuk nilai
keyboardHidden
di contoh Anda, sebaiknya tidak Anda kemudian juga mempertimbangkanlocale
,mcc
,fontScale
,keyboard
dan lain-lain? ..sumber
Saya memiliki baris ini di AndroidManifest.xml saya
Yang saya ubah menjadi (baru ditambahkan
android:screenOrientation="portrait"
)Ini memperbaikinya bagi saya.
sumber
Sesuatu untuk melengkapi: Saya telah memperbarui aplikasi baru-baru ini, yang sebelumnya berfungsi dalam mode lansekap dan potret, dan saya ingin versi yang diperbarui harus bekerja dalam mode potret, jadi saya menambahkan
ke aktivitas yang sesuai, dan hanya macet ketika saya menguji pembaruan. Lalu saya menambahkan
juga, dan itu berhasil.
sumber
Saya pikir Anda ingin menambah
android:configChanges="orientation|keyboardHidden"
aktivitas Anda? Jika tidak, aktivitas akan dimulai kembali dari perubahan konfigurasi. ItuonConfigurationChanged
tidak akan dipanggil kemudian, hanyaonCreate
sumber
Jika Anda ingin mendukung berbagai orientasi
debug
danrelease
pengembangan, tulislah (lihat https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest ).Di
build.gradle
dalamapp
folder Anda tulis:Kemudian di
AndroidManifest
Anda dapat menggunakan "orientasi" variabel ini dalamActivity
:Anda dapat menambahkan
android:configChanges
:manifestPlaceholders = [configChanges: "", orientation: "fullSensor"]
dalam debug danmanifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"]
rilis,sumber
Jawaban singkat: Jangan lakukan itu.
Mendesain ulang aplikasi Anda sehingga dapat berjalan dalam mode potret dan lansekap. Tidak ada yang namanya UI yang tidak dapat dirancang untuk berfungsi baik dalam potret maupun lanskap; hanya pengembang yang malas atau tidak imajinatif.
Alasannya agak sederhana. Anda ingin aplikasi Anda dapat digunakan oleh audiens seluas mungkin pada sebanyak mungkin perangkat yang berbeda. Dengan memaksakan orientasi layar tertentu, Anda mencegah aplikasi Anda berjalan (biasanya) pada perangkat yang tidak mendukung orientasi itu dan Anda membuat frustrasi dan mengasingkan pelanggan potensial yang lebih memilih orientasi yang berbeda.
Contoh: Anda mendesain aplikasi Anda untuk memaksa mode potret. Pelanggan mengunduh aplikasi pada perangkat 2-in-1 yang sebagian besar mereka gunakan dalam mode lansekap.
Konsekuensi 1: Aplikasi Anda tidak dapat digunakan, atau pelanggan Anda terpaksa melepas perangkat mereka, memutarnya, dan menggunakannya dalam orientasi yang tidak akrab atau nyaman bagi mereka.
Konsekuensi 2: Pelanggan merasa frustrasi dengan desain non-intuitif aplikasi Anda dan menemukan alternatif atau membuang aplikasi sepenuhnya.
Saya berjuang dengan ini dengan aplikasi sekarang dan sebagai konsumen dan pengembang, saya benci itu. Sama bermanfaatnya dengan aplikasi ini, sama fantastisnya dengan fitur yang ditawarkannya, saya benar-benar membenci aplikasi tersebut karena memaksa saya untuk menggunakan orientasi yang bertentangan dengan setiap cara saya menggunakan perangkat saya.
Anda tidak ingin pelanggan membenci aplikasi Anda.
Saya tahu ini tidak langsung menjawab pertanyaan, jadi saya ingin menjelaskannya secara lebih rinci bagi mereka yang penasaran.
Ada kecenderungan bagi pengembang untuk benar-benar pandai menulis kode dan benar-benar buruk dalam mendesain. Pertanyaan ini, meskipun kedengarannya seperti pertanyaan kode dan penanya tentu merasa seperti pertanyaan kode, sebenarnya adalah pertanyaan desain.
Pertanyaan sebenarnya adalah "Haruskah saya mengunci orientasi layar di aplikasi saya?" Penanya memilih untuk merancang UI agar berfungsi dan hanya terlihat baik dalam mode potret. Saya menduga itu untuk menghemat waktu pengembangan atau karena alur kerja aplikasi sangat kondusif untuk tata letak potret (umum untuk game seluler). Tetapi alasan-alasan itu mengabaikan semua faktor penting nyata yang memotivasi desain yang tepat.
Keterlibatan pelanggan - Anda ingin pelanggan merasa tertarik ke dalam aplikasi Anda, bukan didorong keluar dari situ. Aplikasi harus bertransisi dengan lancar dari apa pun yang dilakukan pelanggan Anda sebelum membuka aplikasi Anda. (Inilah alasan mengapa sebagian besar platform memiliki prinsip-prinsip desain yang konsisten, sehingga sebagian besar aplikasi terlihat kurang lebih sama meskipun tidak perlu.)
Respons pelanggan - Anda ingin pelanggan bereaksi positif terhadap aplikasi Anda. Mereka harus menikmati menggunakannya. Bahkan jika itu adalah aplikasi penggajian untuk bekerja, itu harus menjadi kesenangan bagi mereka untuk membukanya dan masuk. Aplikasi ini harus menghemat waktu pelanggan Anda dan mengurangi frustrasi atas alternatif. (Aplikasi yang mengganggu pengguna membangun kebencian terhadap aplikasi Anda yang tumbuh menjadi kebencian terhadap merek Anda.)
Konversi pelanggan - Anda ingin pelanggan Anda dapat dengan cepat dan mudah berpindah dari browsing ke berinteraksi. Ini adalah tujuan akhir dari aplikasi apa pun, untuk mengubah tayangan menjadi pendapatan. (Aplikasi yang tidak menghasilkan pendapatan adalah pemborosan waktu Anda untuk membangun, dari perspektif bisnis.)
UI yang dirancang dengan buruk mengurangi keterlibatan dan respons pelanggan yang pada akhirnya menghasilkan pendapatan yang lebih rendah. Dalam dunia mobile-centric (dan terutama pada subjek mode portrait / landscape display), ini menjelaskan mengapa desain web responsif adalah masalah besar. Walmart Kanada memperkenalkan desain responsif di situs web mereka pada November 2013 dan melihat peningkatan konversi pelanggan sebesar 20% . O'Neill Clothing menerapkan desain web responsif dan pendapatan dari pelanggan yang menggunakan perangkat iOS meningkat 101,25% , dan 591,42% dari pelanggan yang menggunakan perangkat Android .
Ada juga kecenderungan bagi pengembang untuk fokus pada penerapan solusi tertentu (seperti penguncian orientasi tampilan), dan sebagian besar pengembang di situs ini akan sangat senang untuk membantu mengimplementasikan solusi tersebut, tanpa mempertanyakan apakah itu adalah yang terbaik solusi untuk masalah tersebut.
Mengunci orientasi layar Anda adalah desain UI yang setara dengan menerapkan loop do-while. Apakah Anda benar-benar yakin ingin melakukannya dengan cara itu, atau adakah alternatif yang lebih baik?
Jangan paksa aplikasi Anda ke mode tampilan tunggal. Investasikan waktu dan upaya ekstra untuk membuatnya responsif.
sumber