Ich versuche, den "Hochformat" -Modus für meine Anwendung zu erzwingen, da meine Anwendung absolut nicht für den "Querformat" -Modus ausgelegt ist.
Nachdem ich einige Foren gelesen hatte, fügte ich diese Zeilen in meine Manifestdatei ein:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:screenOrientation="portrait">
Auf meinem Gerät (HTC Desire) funktioniert es jedoch nicht. Es wechselt von "Hochformat" zu "Querformat" und ignoriert die Zeilen aus der Manifestdatei.
Nachdem ich mehr Foren gelesen hatte, versuchte ich dies in meine Manifestdatei aufzunehmen:
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:configChanges="orientation"
android:screenOrientation="portrait">
und diese Funktion in meiner Aktivitätsklasse:
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Aber wieder kein Glück.
Beachten Sie, dass
wird in der Manifestdatei hinzugefügt - wo die Aktivität definiert ist.
quelle
Ich denke,
android:screenOrientation="portrait"
kann für einzelne Aktivitäten verwendet werden. Verwenden Sie dieses Attribut also in einem<activity>
Tag wie:quelle
Wenn Sie eine Menge Aktivitäten wie meine haben, in Ihrer Anwendung oder wenn Sie nicht den Code für jedes Aktivitäts-Tag im Manifest eingeben möchten, können Sie dies tun.
In Ihrer Application Base-Klasse erhalten Sie einen Lebenszyklus-Rückruf
Im Grunde genommen ist das, was für jede Aktivität beim Erstellen der On-Create-in-Application-Klasse passiert, hier ausgelöst wird, der Code.
ich hoffe das hilft.
quelle
Stellen Sie den Force-Hochformat- oder Querformatmodus ein und fügen Sie Linien hinzu.
Import unter Zeile:
Fügen Sie die untere Zeile direkt darüber hinzu
setContentView(R.layout.activity_main);
Für Porträt :
Für die Landschaft :
Das wird definitiv funktionieren.
quelle
Laut Android-Dokumentation sollten Sie häufig auch
screenSize
eine mögliche Konfigurationsänderung einbeziehen.Auch, wenn Sie alle Werte enthalten
keyboardHidden
in Ihren Beispielen sollten nicht Sie dann auch prüfenlocale
,mcc
,fontScale
,keyboard
und andere? ..quelle
Ich hatte diese Zeile in meiner AndroidManifest.xml
Was ich geändert habe (gerade hinzugefügt
android:screenOrientation="portrait"
)Das hat die Dinge für mich behoben.
quelle
Eine Ergänzung: Ich habe kürzlich eine App aktualisiert, die vorherige funktionierte sowohl im Quer- als auch im Hochformat, und ich möchte, dass die aktualisierte Version im Hochformat funktioniert, also habe ich hinzugefügt
auf die entsprechende Aktivität, und es stürzte gerade ab, als ich das Update getestet habe. Dann habe ich hinzugefügt
auch und es funktioniert.
quelle
Ich denke, Sie möchten
android:configChanges="orientation|keyboardHidden"
Ihre Aktivität erweitern? Andernfalls wird die Aktivität bei Konfigurationsänderung neu gestartet. DasonConfigurationChanged
würde dann nicht heißen, nur dasonCreate
quelle
Wenn Sie unterschiedliche Ausrichtungen
debug
undrelease
Builds unterstützen möchten , schreiben Sie dies (siehe https://developer.android.com/studio/build/gradle-tips#share-properties-with-the-manifest ).In
build.gradle
Ihrenapp
Ordner schreiben:Dann
AndroidManifest
können Sie in diese Variable "Orientierung" in jedem verwendenActivity
:Sie können hinzufügen
android:configChanges
:manifestPlaceholders = [configChanges: "", orientation: "fullSensor"]
im Debug undmanifestPlaceholders = [configChanges: "keyboardHidden|orientation|screenSize", orientation: "portrait"]
in der Veröffentlichung,quelle
Kurze Antwort: Tu es nicht.
Gestalten Sie Ihre App so, dass sie sowohl im Hoch- als auch im Querformat ausgeführt werden kann. Es gibt keine Benutzeroberfläche, die nicht für Hoch- und Querformat geeignet ist. Nur faule oder einfallslose Entwickler.
Der Grund dafür ist ziemlich einfach. Sie möchten, dass Ihre App auf möglichst vielen verschiedenen Geräten von einem möglichst breiten Publikum verwendet werden kann. Indem Sie eine bestimmte Bildschirmausrichtung erzwingen, verhindern Sie, dass Ihre App (brauchbar) auf Geräten ausgeführt wird, die diese Ausrichtung nicht unterstützen, und Sie frustrieren und entfremden potenzielle Kunden, die eine andere Ausrichtung bevorzugen.
Beispiel: Sie entwerfen Ihre App so, dass der Porträtmodus erzwungen wird. Ein Kunde lädt die App auf ein 2-in-1-Gerät herunter, das er überwiegend im Querformat verwendet.
Konsequenz 1: Ihre App ist unbrauchbar oder Ihr Kunde muss sein Gerät abdocken, drehen und in einer für ihn nicht vertrauten oder komfortablen Ausrichtung verwenden.
Konsequenz 2: Der Kunde ist frustriert über das nicht intuitive Design Ihrer App und findet eine Alternative oder macht die App komplett kaputt.
Ich kämpfe gerade mit einer App damit und als Verbraucher und Entwickler hasse ich es. So nützlich die App auch ist, so fantastisch die Funktionen sind, die sie bietet, ich hasse die App absolut, weil sie mich dazu zwingt, eine Ausrichtung zu verwenden, die jeder anderen Art und Weise, wie ich mein Gerät verwende, widerspricht.
Sie möchten nicht, dass Ihre Kunden Ihre App hassen.
Ich weiß, dass dies die Frage nicht direkt beantwortet, deshalb möchte ich es denjenigen, die neugierig sind, etwas näher erläutern.
Es gibt eine Tendenz für Entwickler, wirklich gut im Schreiben von Code und wirklich schrecklich im Design zu sein. Diese Frage, obwohl sie sich wie eine Codefrage anhört und der Fragesteller sicherlich das Gefühl hat, dass es sich um eine Codefrage handelt, ist wirklich eine Entwurfsfrage.
Die Frage ist wirklich: "Soll ich die Bildschirmausrichtung in meiner App sperren?" Der Fragesteller hat die Benutzeroberfläche so gestaltet, dass sie nur im Hochformat funktioniert und gut aussieht. Ich vermute, es war, um Entwicklungszeit zu sparen oder weil der Workflow der App einem Porträtlayout (das für mobile Spiele üblich ist) besonders förderlich ist. Diese Gründe vernachlässigen jedoch alle wirklich wichtigen Faktoren, die das richtige Design motivieren.
Kundenbindung - Sie möchten, dass sich Ihre Kunden in Ihre App hineingezogen fühlen und nicht aus ihr herausgedrückt werden. Die App sollte reibungslos von dem übergehen, was Ihr Kunde vor dem Öffnen Ihrer App getan hat. (Dies ist der Grund, warum die meisten Plattformen einheitliche Designprinzipien haben, sodass die meisten Apps mehr oder weniger ähnlich aussehen, obwohl dies nicht erforderlich ist.)
Kundenreaktion - Sie möchten, dass Ihre Kunden positiv auf Ihre App reagieren. Sie sollten es genießen, es zu benutzen. Selbst wenn es sich um eine Gehaltsabrechnungs-App für die Arbeit handelt, sollte es für sie eine Freude sein, sie zu öffnen und einzusteigen. Die App sollte Ihren Kunden Zeit sparen und die Frustration über Alternativen verringern. (Apps, die Benutzer ärgern, führen zu Ressentiments gegen Ihre App, die zu Ressentiments gegen Ihre Marke führen.)
Kundenkonvertierung - Sie möchten, dass Ihre Kunden schnell und einfach vom Surfen zur Interaktion wechseln können. Dies ist das ultimative Ziel jeder App, Impressionen in Einnahmen umzuwandeln. (Apps, die keinen Umsatz generieren, sind aus geschäftlicher Sicht Zeitverschwendung beim Erstellen.)
Eine schlecht gestaltete Benutzeroberfläche reduziert die Kundenbindung und -reaktion, was letztendlich zu geringeren Einnahmen führt. In einer mobilzentrierten Welt (und insbesondere im Bereich der Hoch- / Querformat-Anzeigemodi) erklärt dies, warum reaktionsschnelles Webdesign so wichtig ist. Walmart Canada hat im November 2013 Responsive Design auf seiner Website eingeführt und die Kundenkonvertierung um 20% gesteigert. O'Neill Clothing implementierte responsives Webdesign und der Umsatz von Kunden mit iOS-Geräten stieg um 101,25% und von Kunden mit Android-Geräten um 591,42% .
Entwickler tendieren auch dazu, sich intensiv auf die Implementierung einer bestimmten Lösung zu konzentrieren (z. B. das Sperren der Anzeigeorientierung), und die meisten Entwickler auf dieser Website helfen nur allzu gerne bei der Implementierung dieser Lösung, ohne zu hinterfragen, ob dies überhaupt die beste ist Lösung für das Problem.
Das Sperren der Bildschirmausrichtung entspricht dem UI-Design der Implementierung einer Do-While-Schleife. Sind Sie wirklich sicher, dass Sie es so machen möchten, oder gibt es eine bessere Alternative?
Erzwingen Sie nicht, dass Ihre App in einen einzelnen Anzeigemodus wechselt. Investieren Sie zusätzliche Zeit und Mühe, um darauf zu reagieren.
quelle