Yanıtlar:
android:screenOrientation="portrait"Manifest.xml dosyanızdaki her etkinlik için belirtebilirsiniz . applicationEtikette bu seçeneği belirleyemezsiniz .
Diğer seçenek, programlı olarak, örneğin bir Activitytemel sınıfta yapmaktır :
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Son seçenek, yalnızca Android 4.0'dan (API 14+) beri kullanılabilen etkinlik yaşam döngüsü dinleyicileri ile yapmaktır. Her şey özel bir Applicationsınıfta gerçekleşir:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdaptersadece boş bir uygulama olacak oluşturmak için gereken bir yardımcı sınıftır ActivityLifecycleCallbacks(bu yüzden bunlardan birine ihtiyacınız olduğunda o arayüzün her bir yöntemini geçersiz kılmak zorunda değilsiniz).
Evet bunu hem programlı olarak hem de tüm aktiviteleriniz için tüm aktivitelerinizin genişlettiği bir AbstractActivity yaparak yapabilirsiniz.
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Bu soyut etkinlik küresel bir menü için de kullanılabilir.
ActivityInfo.SCREEN_ORIENTATION_NOSENSORdaha iyi bir yanıt olması gerektiğine inanıyorum çünkü bazı cihazların Dikey yönlendirmesi olmadığı için cihazı varsayılan durumda bırakması amaçlanıyor. Ancak, 'nosensor' benim için çalışmıyor, bu yüzden @ arcone'un cevabı benim için.
Bunu tüm uygulamanız için tüm faaliyetlerinizin ortak bir taban sınıfını genişletmesine kalmadan için yapabilirsiniz.
Püf noktası Application, projenize bir alt sınıf eklediğinizden emin olmaktır . Onun içinde onCreate(), uygulama ilk başladığında, bir kayıt denilenActivityLifecycleCallbacks aktivite yaşam döngüsü olayların bildirimlerini almak için nesneyi (API seviyesi 14+).
Bu, uygulamanızdaki herhangi bir etkinlik başlatıldığında (veya durdurulduğunda veya devam ettirildiğinde veya her neyse) kendi kodunuzu yürütme fırsatı verir . Bu noktada setRequestedOrientation()yeni oluşturulan etkinliği arayabilirsiniz .
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);
}
....
});
}
}
Bunu manifest dosyanızda ayarlayabilirsiniz.
android:name=".your launching activity name"
android:screenOrientation="portrait"
ve sınıf dosyanızdaki kodu aşağıdaki gibi yazarak da elde edebilirsiniz:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
AndroidManifest.xml'deki etkinliğe android: screenOrientation = "portre" ekleyin. Örneğin:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
kullanın:
android:screenOrientation="portrait"
Bu satırı yalnızca dikey modda göstermek istediğiniz her etkinlikte uygulamanızın manifest dosyasına yazmanız yeterlidir.
Android geliştirici kılavuzundan:
"yön" Ekran yönü değişti - kullanıcı cihazı döndürdü. Not: Uygulamanız API seviyesi 13 veya üzerini (minSdkVersion ve targetSdkVersion öznitelikleri tarafından bildirildiği gibi) hedefliyorsa, bir aygıt dikey ve yatay yönler arasında geçiş yaptığında da değiştiğinden, "screenSize" yapılandırmasını da bildirmeniz gerekir.
"screenSize" Mevcut ekran boyutu değişti. Bu, geçerli en boy oranına göre şu anda kullanılabilir boyutta bir değişikliği temsil eder, bu nedenle kullanıcı yatay ve dikey arasında geçiş yaptığında değişir. Ancak, uygulamanız API düzey 12 veya daha düşük bir sürümü hedefliyorsa, etkinliğiniz her zaman bu yapılandırma değişikliğini kendisi yapar (bu yapılandırma değişikliği, bir Android 3.2 veya daha yüksek cihazda çalışırken bile etkinliğinizi yeniden başlatmaz). API seviye 13'te eklendi.
Yani, AndroidManifest.xml dosyasına şunu koyabiliriz:
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
Altına <preference name="orientation" value="portrait" />ekleniyor<widget> benim Config.xml benim için çalıştı içinde.
(Ya cihazımda çalışmadı, bina sırasında üzerine yazıldı veya oluşturma işlemi sırasında kullanımdan kaldırma hataları verdi.)
Manifest dosyasında "dikey" de kullanmak istediğiniz etkinliği bu kodu Etkinlik etiketine yazmalısınız
android:screenOrientation="portrait"
bunun gibi
android:icon="@drawable/icon"
android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity"
android:screenOrientation="portrait" >
ama yatay ekran istiyorsanız u bu kodu bu gibi kullanın
android:screenOrientation="landscape"
Merak eden biri varsa, bunu tüm faaliyetleriniz için Kotlin'de ortak bir temel sınıf genişletmek zorunda kalmadan tüm uygulamanız için nasıl yapabilirsiniz , aşağıdaki örneğe bakın:
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?) {
}
})
}
}
ve sonra AndroidManifest'te ortak temel sınıfınızı şu şekilde eklemelisiniz:
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
@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);
}
Graham Borland'ın cevabına benzer ... ancak istemiyorsanız Uygulama sınıfı oluşturmak zorunda değilsiniz ... sadece projenizde bir Temel Etkinlik oluşturun
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Ve Potrait Modunu kullanmak istediğiniz AppCompatActivity yerine bu sınıfı genişletin
public class your_activity extends BaseActivity {}
Xamarin Kullanıcıları için:
Tüm etkinliklerinizi bir BaseActivityJust eklentisine genişletirseniz :
this.RequestedOrientation = ScreenOrientation.Portrait;
Bu sorunu çözecektir. Belirli bir etkinliğin yatay olmasını istiyorsanız, bunu geçersiz kılın OnActivityCreated. Gibi:
this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
Bildirinizde şunu yazın:
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>