Jawaban:
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.
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Aktivitas abstrak ini juga dapat digunakan untuk menu global.
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 dalamnya onCreate()
, dipanggil ketika aplikasi Anda pertama kali dinyalakan, Anda mendaftarkan ActivityLifecycleCallbacks
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.
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
Anda dapat mengatur ini di file manifes Anda ..
android:name=".your launching activity name"
android:screenOrientation="portrait"
dan Anda juga dapat mencapai hal yang sama dengan menulis kode di file kelas Anda seperti:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Tambahkan android: screenOrientation = "portrait" ke aktivitas di AndroidManifest.xml. Sebagai contoh:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
Menggunakan:
android:screenOrientation="portrait"
Tulis saja baris ini di file manifes aplikasi Anda di setiap aktivitas yang ingin Anda tampilkan dalam mode potret saja.
Seperti dari panduan pengembang Android:
"orientasi" Orientasi layar telah berubah - pengguna telah memutar perangkat. Catatan: Jika aplikasi Anda menargetkan API level 13 atau lebih tinggi (seperti yang dinyatakan oleh atribut minSdkVersion dan targetSdkVersion), maka Anda juga harus mendeklarasikan konfigurasi "screenSize", karena itu juga berubah ketika perangkat beralih antara orientasi potret dan lanskap.
"screenSize" Ukuran layar yang tersedia saat ini telah berubah. Ini mewakili perubahan dalam ukuran yang tersedia saat ini, relatif terhadap rasio aspek saat ini, sehingga akan berubah ketika pengguna beralih antara lanskap dan potret. Namun, jika aplikasi Anda menargetkan API level 12 atau lebih rendah, maka aktivitas Anda selalu menangani perubahan konfigurasi itu sendiri (perubahan konfigurasi ini tidak memulai kembali aktivitas Anda, bahkan ketika berjalan pada perangkat Android 3.2 atau lebih tinggi). Ditambahkan di API level 13.
Jadi, dalam file AndroidManifest.xml, kita dapat meletakkan:
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
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.)
dalam file Manifest aktivitas mana yang ingin Anda gunakan dalam "potret" Anda harus menulis kode ini dalam tag Aktivitas
android:screenOrientation="portrait"
seperti ini
android:icon="@drawable/icon"
android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity"
android:screenOrientation="portrait" >
tetapi jika Anda ingin layar dalam lanskap gunakan kode ini seperti ini
android:screenOrientation="landscape"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//setting screen orientation locked so it will be acting as potrait
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}
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:
class InteractiveStoryApplication: Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
override fun onActivityPaused(activity: Activity?) {
}
override fun onActivityResumed(activity: Activity?) {
}
override fun onActivityDestroyed(activity: Activity?) {
}
override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
}
override fun onActivityStarted(activity: Activity?) {
}
override fun onActivityStopped(activity: Activity?) {
}
})
}
}
dan kemudian Anda harus menambahkan kelas dasar umum Anda di AndroidManifest seperti:
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
Mirip dengan jawaban Graham Borland ... tetapi sepertinya Anda tidak perlu membuat kelas Aplikasi jika Anda tidak mau ... buat saja Kegiatan Dasar di proyek Anda
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Dan perluas kelas ini daripada AppCompatActivity tempat Anda ingin menggunakan Mode Potrait
public class your_activity extends BaseActivity {}
Untuk Pengguna Xamarin:
Jika Anda memperluas semua aktivitas Anda ke BaseActivity
Just add:
this.RequestedOrientation = ScreenOrientation.Portrait;
Ini akan menyelesaikan masalah. Jika Anda ingin aktivitas tertentu berada di lanskap, abaikan ini dalam OnActivityCreated
. Sebagai:
this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
Dalam Manifest Anda ketik ini:
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>