Bagaimana saya dapat menonaktifkan modus lansekap untuk beberapa tampilan di aplikasi Android?
Menambahkan android:screenOrientation="potret"
untuk kegiatan di AndroidManifest.xml. Misalnya:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
EDIT: Karena ini telah menjadi super-populer jawabannya, aku merasa sangat bersalah karena memaksa potret jarang solusi yang tepat untuk masalah itu's sering diterapkan untuk.
Utama peringatan dengan paksa potret:
retainInstance
fragmen.Jadi kebanyakan aplikasi hanya harus membiarkan telepon sensor, perangkat lunak, dan konfigurasi fisik membuat keputusan mereka sendiri tentang bagaimana pengguna ingin berinteraksi dengan aplikasi anda. Beberapa kasus, anda mungkin masih ingin untuk berpikir tentang, meskipun, jika anda're tidak senang dengan perilaku default sensor
orientasi dalam kasus penggunaan anda:
nosensor
untuk orientasi. Hal ini akan memaksa lanskap pada kebanyakan tablet dan potret pada kebanyakan ponsel, tapi aku masih tidak't merekomendasikan ini untuk sebagian besar, "normal" aplikasi (beberapa pengguna seperti untuk mengetik dalam lanskap softkeyboard pada ponsel mereka, dan banyak pengguna tablet baca di potret - dan anda harus membiarkan mereka).sensorPortrait
mungkin lebih baik dari potret
untuk Android 2.3+; hal ini memungkinkan untuk upside-down potret, yang cukup umum dalam penggunaan tablet.Saya tidak menyadari AndroidManifest.xml
file beralih sampai membaca posting ini, jadi di aplikasi saya saya telah menggunakan ini sebagai gantinya:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
Tambahkan ini android:screenOrientation="potret"
di file manifest dimana anda menyatakan aktivitas anda seperti ini
<activity android:name=".yourActivity"
....
android:screenOrientation="portrait" />
Jika anda ingin menggunakan kode java mencoba
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
sebelum anda menelepon setContentView
metode untuk aktivitas anda di onCreate()
.
Semoga ini bisa membantu dan mudah dimengerti untuk semua...
Banyak dari jawaban berikut yang menyarankan untuk menggunakan "potret"
pada anda AndroidManifest.xml file. Ini mungkin tampak seperti solusi yang baik - tapi seperti yang tercantum dalam dokumentasi, anda singling keluar perangkat yang mungkin hanya memiliki lanskap. Anda juga memaksa perangkat tertentu (yang bekerja terbaik dalam landscape) untuk pergi ke potret, tidak mendapatkan orientasi yang tepat.
Saran saya adalah dengan menggunakan "nosensor"
sebagai gantinya. Ini akan meninggalkan perangkat untuk menggunakan default pilihan orientasi, tidak akan memblokir setiap pembelian/download di Google Play, dan akan memastikan sensor doesn't mengacaukan anda (NDK, dalam kasus saya) permainan.
Jika anda ingin user-pengaturan,
kemudian saya'd merekomendasikan setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Anda dapat mengubah pengaturan dari menu pengaturan.
Saya memerlukan ini karena saya timer harus sesuai dengan apa yang's pada layar, dan memutar layar akan menghancurkan aktivitas saat ini.
Hanya Seperti menambahkan Baris ini di Manifes Anda
android:screenOrientation="potret"
<manifest
package="com.example.speedtest"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ComparisionActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
Anda harus mengubah android:screenOrientation="sensorPortrait"
di AndroidManifest.xml
Jika anda don't ingin pergi melalui kerumitan menambahkan orientasi di masing-masing entri manifest aktivitas yang lebih baik, membuat BaseActivity kelas (mewarisi 'Kegiatan' atau 'AppCompatActivity') yang akan diwarisi oleh setiap aktivitas aplikasi anda bukan 'Kegiatan' atau 'AppCompatActivity' dan hanya menambahkan potongan kode berikut di BaseActivity:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// rest of your code......
}
Cara mengubah orientasi dalam beberapa view
Alih-alih mengunci orientasi seluruh kegiatan anda dapat menggunakan kelas ini untuk secara dinamis mengunci orientasi dari setiap pandangan pragmatis:-
Membuat tampilan anda Lanskap
OrientationUtils.lockOrientationLandscape(mActivity);
Membuat tampilan anda Portrait
OrientationUtils.lockOrientationPortrait(mActivity);
Membuka Orientasi
OrientationUtils.unlockOrientation(mActivity);
Orientasi Util Kelas
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.os.Build;
import android.view.Surface;
import android.view.WindowManager;
/* * This class is used to lock orientation of android app in nay android devices
*/
public class OrientationUtils {
private OrientationUtils() {
}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Locks the device window in actual screen mode. */
public static void lockOrientation(Activity activity) {
final int orientation = activity.getResources().getConfiguration().orientation;
final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
.getRotation();
// Copied from Android docs, since we don't have these values in Froyo
// 2.2
int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
// Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
/** Unlocks the device window in user defined screen mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
Jika anda ingin menonaktifkan modus Lansekap untuk aplikasi android anda
( atau kegiatan tunggal) semua yang perlu anda lakukan adalah menambahkan,
android:screenOrientation="potret"
untuk aktivitas tag di AndroidManifest.xml
file.
Seperti:
<activity android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
Cara Lain , Program Pendekatan.
Jika anda ingin melakukan hal ini secara programatik yaitu. menggunakan kode Java. Anda dapat melakukannya dengan menambahkan kode di bawah ini di dalam Java class activity yang anda don't ingin ditampilkan dalam modus lansekap.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Saya berharap hal ini membantu anda .Untuk lebih jelasnya anda bisa kunjungi di sini masukkan link description here
Anda harus mengatur orientasi dari masing-masing kegiatan.
<activity
android:name="com.example.SplashScreen2"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Registration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.Verification"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.WelcomeAlmostDone"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
android:name="com.example.PasswordRegistration"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Black.NoTitleBar" >
</activity>
Anda dapat memaksa aktivitas tertentu untuk selalu tetap dalam mode portrait dengan menulis ini di manifest.xml
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
Anda juga dapat memaksa aktivitas anda untuk tetap di postrait mode dengan menulis baris berikut dalam aktivitas anda's method onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Jika anda menggunakan Xamarin C# beberapa solusi ini tidak akan bekerja. Di sini adalah solusi yang saya temukan untuk bekerja.
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
Di atas kelas bekerja dengan baik, mirip dengan solusi lain, juga tidak berlaku secara global dan kebutuhan untuk ditempatkan di setiap kegiatan header.
Anda dapat melakukan ini untuk anda seluruh aplikasi tanpa harus membuat semua aktivitas anda memperpanjang dasar umum kelas.
Caranya adalah pertama-tama pastikan anda memiliki Aplikasi subclass dalam proyek anda. Dalam onCreate(), dipanggil saat aplikasi pertama kali dijalankan, anda mendaftarkan ActivityLifecycleCallbacks objek (API level 14+) untuk menerima pemberitahuan dari kegiatan siklus peristiwa.
Ini memberi anda kesempatan untuk mengeksekusi kode anda sendiri setiap kali ada kegiatan di aplikasi anda dimulai (atau dihentikan, atau dilanjutkan, atau apapun). Pada titik ini anda dapat menghubungi setRequestedOrientation() pada kotak yang baru dibuat kegiatan.
Dan jangan lupa untuk menambahkan aplikasi:nama=".MyApp" di file manifest.
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);
}
....
});
}
}
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>