Vorschläge zur Anzeigenrotation

In Android 8.0 konnten Nutzer zwischen automatischem Drehen und Hochformat wechseln. über die Kachel „Schnelleinstellungen“ oder die Displayeinstellungen. In Android 9 haben wir im Hochformat drehen, um unbeabsichtigte Drehungen zu vermeiden, indem Sie aktuelle Bildschirmdrehung, auch wenn sich die Geräteposition ändert. Nutzer können auslösen manuelle Drehung manuell durch Drücken einer neuen Schaltfläche in der Navigationsleiste. Wir haben den Hochformatmodus in Rotationssperre umbenannt. Er wird beim automatischen Drehen aktiviert. ist deaktiviert. Der automatische Drehmodus bleibt unverändert.

Wenn sich das Gerät im Rotationssperremodus befindet, können Nutzer ihren Bildschirm auf beliebige Drehung unterstützt von der oberen, sichtbaren Aktivität (beim aktuellen System). Einschränkungen). Wenn die oberste Aktivität in mehreren Rotationen in automatisch drehen, sollten dieselben Optionen im Sperrmodus für die Drehung verfügbar sein. mit einigen Ausnahmen basierend auf den screenOrientation der Aktivität Einstellung.

Im Modus „Rotationssperre“ wird beim Drehen des Geräts eine Schaltfläche in der Navigationsleiste angezeigt Änderungen. Dazu muss der Ausrichtungssensor des Geräts aktiv bleiben auch wenn das automatische Drehen deaktiviert ist. Durch Tippen auf diese Schaltfläche wird die Nutzerrotation festgelegt. Einstellung (Settings.System.USER_ROTATION). WindowManager verwendet diese sowie andere Details zur wichtigsten Aktivität und zum Systemstatus, um die Rotation des Systems zu ändern. WindowManager verwendet weiterhin die Nutzerrotation. Präferenz bei der Entscheidung, in welche Drehung das System beim Wechsel zu einer anderen Aktivität.

<ph type="x-smartling-placeholder">
</ph> Dieses GIF zeigt ein Smartphone im Querformat mit dem Display im Querformat.
       Hochformat. Ein Symbol wird angezeigt, über das der Nutzer gefragt wird, ob er
       ihre Bildschirmausrichtung ins Querformat ändern.
Abbildung 1: Schaltfläche zum Drehen von Vorschlägen mit „Wischen“ nach oben auf der Startbildschirmtaste“ Touch-Geste aktiviert

Die Einstellung für die Nutzerrotation sollte beibehalten werden, wenn zwischen den Aktivitäten gewechselt wird. Da die meisten Smartphone-Nutzer jedoch nur kurz im Querformat arbeiten möchten, vorübergehenden Zeitraum haben, haben wir die Verzerrungen durch natürliche Ausrichtung hinzugefügt. Nutzerrotation auf die natürliche Ausrichtung des Geräts zurückgesetzt, sobald die ändert sich die Systemdrehung auf die natürliche Ausrichtung des Geräts. Bei den meisten Smartphones Die natürliche Ausrichtung des Geräts ist Hochformat (0o). Nutzerrotation wird zurückgesetzt wenn eine App im Hochformat verwendet, das Smartphone gesperrt oder Sie kehren zum Arbeitsbereich des Launchers zurück.

Die Rotationsinteraktionen für Nutzer haben sich in den letzten zehn Jahren kaum verändert. Nutzer*innen ist diese Funktion möglicherweise aufgrund ihrer bisherigen Rotation schwer zu finden. und Schaltflächen in der Navigationsleiste. Aus diesem Grund haben wir im Einführungsmodus auf die Schaltfläche zum Drehen, mit der es hervorgehoben wird. Einleitung nur für die ersten Schaltflächeninteraktionen. Einführungsmodus ist deaktiviert.

Quelle

Unterstützung für Rotationsvorschläge wurde hinzugefügt Android 9 Die meisten Änderungen sind im folgenden Dateien.

  • services/.../server/policy/PhoneWindowManager.java: <ph type="x-smartling-placeholder">
      </ph>
    • Hooks, die die Ausgabe von WindowOrientationListener verbrauchen (MyOrientationListener, verantwortlich für Monitoring Sensoren, um festzustellen, ob das Gerät gedreht wurde)
    • WindowOrientationListener bleibt aktiv, auch wenn Automatisches Drehen ist deaktiviert (siehe needSensorRunningLp()).
    • Berechnet die Systemrotation gemäß der Nutzerrotationseinstellung, oben Einstellungen für „Aktivität“ screenOrientation und Systemstatus (siehe rotationForOrientationLw())
    • Bestimmen Sie, ob sich die obere Aktivität in einer bestimmten Drehung drehen kann (siehe isRotationChoicePossible())
  • SystemUI/.../statusbar/phone/NavigationBarFragment: <ph type="x-smartling-placeholder">
      </ph>
    • Legt fest, ob die Navigationsleistenschaltfläche beim Drehen angezeigt werden soll Rückrufvorschläge von PhoneWindowManager (siehe onRotationProposal())
    • Handles, wann die Schaltfläche zum Drehen der Navigationsleiste (siehe Aufrufe der setRotateSuggestionButtonState(false))
    • Behandelt Zeitüberschreitungen von Schaltflächen, einschließlich des Sonderfalls, wenn das Navigationsleiste ist ausgeblendet (üblicherweise im Vollbildmodus)
    • Setzt die Nutzereinstellung bei Rückkehr auf die natürliche Umgebung des Geräts zurück Ausrichtung (mRotationWatcher)
    • Er wählt den passenden Stil für die Animation der Navigationsleistenschaltfläche angewendet in NavigationBarView (siehe onRotationProposal())
    • Logik für Einführungsmodus hinzugefügt, einschließlich spezialisierter Animationen (siehe Verweise auf Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED)
    • Implementiert das Rotations-Flag „disable2“ (siehe disable())
  • SystemUI/.../statusbar/phone/NavigationBarView.java: <ph type="x-smartling-placeholder">
      </ph>
    • Legt die Animation des Schaltflächensymbols fest, damit sie der ausstehenden Rotation entspricht (siehe updateRotateSuggestionButtonStyle())
    • Bearbeitet die Sichtbarkeit von Schaltflächen (siehe setRotateButtonVisibility()), einschließlich Logik zum Ausblenden Schaltfläche zum Drehen, wenn bestimmte Bedienungshilfen aktiv sind (unter Berücksichtigung des Navigationsleisten-Schaltflächenstapels ganz rechts)
  • SystemUI/res/layout/menu_ime.xml: <ph type="x-smartling-placeholder">
      </ph>
    • Enthält ein neues KeyButtonView für die Schaltfläche „Drehen“, über dem Menü und der IME/Tastaturauswahl, aber unter der Schaltfläche „Bedienungshilfen“
  • SystemUI/res/drawable/ic_sysbar_rotate_button.xml: <ph type="x-smartling-placeholder">
      </ph>
    • Komplexe AnimatedVectorDrawable zur Animation der Schaltfläche zum Drehen der Navigationsleiste
    • Stile (in SystemUI/res/values/styles.xml) werden für Folgendes verwendet: Start- und Endwinkel für Drehbewegung festlegen, sodass dasselbe Zeichnungselement werden verwendet, um verschiedene Start- und Endrotationen zu animieren.
    • Symbolfärbung wird über TintedKeyButtonDrawable eingestellt

Implementierung

Android 9 umfasst alle notwendigen Änderungen, Rotationsvorschläge funktionieren für Geräte, die Software-Navigationstasten verwenden (z. B. „Zurück“ oder „Zuhause“).

Gerätehersteller, die Geräte mit Hardware-Navigationstasten herstellen, zur Implementierung dieser Funktion eine eigene System-UI entwerfen und implementieren. oder die Funktion deaktivieren. Es wird empfohlen, jede eingeführte Oberfläche einfach zu bedienen sein, wenn das Gerät auf 90 o oder 180 o zum aktuellen System gehalten wird Rotation und ist schnell zugänglich. Daher ist die Verwendung von Benachrichtigungen (wie beim IME/Tastatur-Picker) wird nicht empfohlen.

Die Hardwareanforderungen für die Verwendung dieser Funktion stimmen mit den Anforderungen überein automatisch drehen.

Für eine konsistente Implementierung muss die Einstellung für die Nutzerrotation (Settings.System.USER_ROTATION) wird auf den natürlichen Modus des Geräts zurückgesetzt Rotation, wenn sich das System aus irgendeinem Grund in die natürliche Rotation des Geräts ändert wenn das automatische Drehen deaktiviert ist. Dies geschieht mit der bereitgestellten Implementierung (siehe NavigationBarFragment.mRotationWatcher).

In StatusBarManager.disable2 gibt es ein neues Flag, das vorübergehend verhindern, dass Rotationsvorschläge angezeigt werden. Weitere Informationen finden Sie unter StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS Dieses Flag muss in allen Implementierungen respektiert, da sie von kritischen System-Apps verwendet werden, einschließlich Einrichtungsassistent. Die bereitgestellte Implementierung unterstützt dies (siehe NavigationBarFragment.disable().

Wir empfehlen dringend, die Funktion zu aktivieren und dem AOSP zu folgen Implementierung nach Möglichkeit. Unser Ziel ist es, die Rotation auf verschiedenen Geräten. Das spiegelt die Einheitlichkeit wider, die auf den meisten Smartphones heutzutage automatisch drehen und Hochformat sperren.

Personalisierung

Da Rotationsvorschläge nur im Sperrmodus für die Drehung angezeigt werden (automatisches Drehen deaktiviert) können Sie festlegen, ob die Funktion bei Neuinstallationen Das automatische Drehen ist standardmäßig deaktiviert. Weitere Informationen finden Sie unter def_accelerometer_rotation Zoll SettingsProvider/res/values/defaults.xml, um Standardänderungen vorzunehmen.

Nutzer können unabhängig von der Standardeinstellung jederzeit ändern, ob das automatische Drehen aktiviert ist oder nicht. über die Kachel drehen in den Schnell- oder Anzeigeeinstellungen.

Zertifizierungsstufe

Zu Testzwecken lässt sich die Funktion durch Ändern einer Markierung ein- und ausschalten. Settings.Secure-Wert. Dies wurde am einfachsten mit dem folgenden Befehl von einer privilegierten ADB-Instanz:

adb shell settings put secure show_rotation_suggestions <x>

Legen Sie „x“ für „Aus“ auf 0 und für „Ein“ auf „1“ fest.

Zu Testzwecken kann der Einführungsmodus zurückgesetzt werden, indem die zugehörigen Settings.Secure-Wert. Dies wurde am einfachsten mit dem folgenden Befehl von einer privilegierten ADB-Instanz:

adb shell settings put secure num_rotation_suggestions_accepted 0