Antworten:
Sie können android:screenOrientation="portrait"
für jede Aktivität in Ihrer Datei manifest.xml angeben . Sie können diese Option nicht für das application
Tag angeben .
Eine andere Möglichkeit besteht darin, dies programmgesteuert durchzuführen, beispielsweise in einer Activity
Basisklasse:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Die letzte Option besteht darin, dies mit Listenern für den Aktivitätslebenszyklus zu tun, die erst seit Android 4.0 (API 14+) verfügbar sind. Alles geschieht in einer benutzerdefinierten Application
Klasse:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter
ist nur eine Hilfsklasse, die Sie erstellen müssen und die eine leere Implementierung von ist ActivityLifecycleCallbacks
(damit Sie nicht jede einzelne Methode dieser Schnittstelle überschreiben müssen, wenn Sie nur eine davon benötigen).
Ja, Sie können dies sowohl programmgesteuert als auch für alle Ihre Aktivitäten tun, indem Sie eine AbstractActivity erstellen, die alle Ihre Aktivitäten erweitert.
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Diese abstrakte Aktivität kann auch für ein globales Menü verwendet werden.
ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
dies die bessere Antwort sein sollte, da das Gerät im Standardzustand belassen werden soll, da einige Geräte keine Porträtausrichtung haben. 'Nosensor' funktioniert jedoch NICHT für mich, daher steht die Antwort von @ arcone für mich.
Sie können dies für Ihre gesamte Anwendung ohne tun dass alle Ihre Aktivitäten eine gemeinsame Basisklasse erweitern müssen.
Der Trick besteht zunächst darin, sicherzustellen, dass Sie eine Application
Unterklasse in Ihr Projekt aufnehmen. In seiner Funktion onCreate()
, die beim ersten Start Ihrer App aufgerufen wird, registrieren Sie eineActivityLifecycleCallbacks
Objekt (API-Level 14+), um Benachrichtigungen über Aktivitätslebenszyklusereignisse zu erhalten.
Dies gibt Ihnen die Möglichkeit, Ihren eigenen Code auszuführen, wenn eine Aktivität in Ihrer App gestartet (oder gestoppt oder fortgesetzt oder was auch immer) wird. An dieser Stelle können Sie setRequestedOrientation()
die neu erstellte Aktivität aufrufen .
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);
}
....
});
}
}
Sie können dies in Ihrer Manifestdatei festlegen.
android:name=".your launching activity name"
android:screenOrientation="portrait"
und Sie können dasselbe auch erreichen, indem Sie den Code in Ihre Klassendatei schreiben, wie:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Fügen Sie der Aktivität in der Datei AndroidManifest.xml android: screenOrientation = "Porträt" hinzu. Beispielsweise:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
Verwenden:
android:screenOrientation="portrait"
Schreiben Sie diese Zeile einfach in die Manifestdatei Ihrer Anwendung in jeder Aktivität, die Sie nur im Hochformat anzeigen möchten.
Ab Android Entwicklerhandbuch:
"Ausrichtung" Die Bildschirmausrichtung hat sich geändert - der Benutzer hat das Gerät gedreht. Hinweis: Wenn Ihre Anwendung auf API-Level 13 oder höher abzielt (wie durch die Attribute minSdkVersion und targetSdkVersion deklariert), sollten Sie auch die Konfiguration "screenSize" deklarieren, da sie sich auch ändert, wenn ein Gerät zwischen Hoch- und Querformat wechselt.
"screenSize" Die aktuell verfügbare Bildschirmgröße hat sich geändert. Dies stellt eine Änderung der derzeit verfügbaren Größe im Verhältnis zum aktuellen Seitenverhältnis dar und ändert sich, wenn der Benutzer zwischen Quer- und Hochformat wechselt. Wenn Ihre Anwendung jedoch auf API-Stufe 12 oder niedriger abzielt, behandelt Ihre Aktivität diese Konfigurationsänderung immer selbst (diese Konfigurationsänderung startet Ihre Aktivität nicht neu, selbst wenn sie auf einem Android 3.2-Gerät oder höher ausgeführt wird). Hinzugefügt in API Level 13.
In der Datei AndroidManifest.xml können wir also Folgendes einfügen:
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
Das Hinzufügen <preference name="orientation" value="portrait" />
unter <widget>
in meiner config.xml hat bei mir funktioniert.
(Die anderen Lösungen funktionierten entweder nicht auf meinem Gerät, wurden beim Erstellen überschrieben oder gaben während des Erstellungsprozesses Verfallsfehler an.)
In der Manifest-Datei, welche Aktivität Sie in "Porträt" verwenden möchten, müssen Sie diesen Code in das Aktivitäts-Tag schreiben
android:screenOrientation="portrait"
so was
android:icon="@drawable/icon"
android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity"
android:screenOrientation="portrait" >
Wenn Sie jedoch einen Bildschirm im Querformat wünschen, verwenden Sie diesen Code wie folgt
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);
}
Wenn sich jemand gefragt hat, wie Sie dies für Ihre gesamte Anwendung tun können, ohne dass alle Ihre Aktivitäten eine gemeinsame Basisklasse in Kotlin erweitern müssen , sehen Sie sich das folgende Beispiel an:
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?) {
}
})
}
}
und dann müssen Sie Ihre gemeinsame Basisklasse in AndroidManifest wie folgt hinzufügen:
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
Ähnlich wie bei Graham Borland ... aber es scheint, dass Sie keine Anwendungsklasse erstellen müssen, wenn Sie nicht möchten ... erstellen Sie einfach eine Basisaktivität in Ihrem Projekt
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Erweitern Sie diese Klasse anstelle von AppCompatActivity, wenn Sie den Potrait-Modus verwenden möchten
public class your_activity extends BaseActivity {}
Für Xamarin-Benutzer:
Wenn Sie alle Ihre Aktivitäten auf ein BaseActivity
einfaches Hinzufügen erweitern:
this.RequestedOrientation = ScreenOrientation.Portrait;
Dadurch wird das Problem behoben. Wenn Sie möchten, dass sich eine bestimmte Aktivität im Querformat befindet, überschreiben Sie diese in OnActivityCreated
. Wie:
this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
Geben Sie in Ihrem Manifest Folgendes ein:
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>