Önerileri dönüşümlü yayınla

Android 8.0'da kullanıcılar otomatik döndürme ve dikey döndürme arasında geçiş yapabiliyordu veya Görüntü ayarları'nı kullanarak modları kolayca ayarlayabilirsiniz. Android'de 9, istenmeyen döndürmeleri ortadan kaldırmak için dikey döndürme modu cihaz konumu değişse bile geçerli ekran döndürme Kullanıcılar tetikleyebilir veya gezinme çubuğunda yeni bir düğmeye basarak döndürmeyi manuel olarak yapabilirsiniz. Dikey modu döndürme kilidi olarak yeniden adlandırdık ve otomatik döndürme olduğunda etkinleşiyor kapalı olduğundan emin olun. Otomatik döndürme modunda herhangi bir değişiklik yoktur.

Cihaz döndürme kilit modundayken kullanıcılar ekranlarını döndürme, görünür Etkinlik (mevcut sistem göz önünde bulundurulduğunda) kısıtlamalar) sunulur. En üstteki Etkinlik'in birden fazla rotasyonda oluşturulabildiği durumlarda (ör. aynı seçenekler, kilitli döndürme modunda da kullanılabilmelidir. Etkinlik'in screenOrientation şartlarına göre bazı istisnalar dışında ayarını değiştirebilirsiniz.

Dönme kilidi modu, cihaz döndürüldüğünde gezinme çubuğunda bir düğme göstererek çalışır anlamına gelir. Bunun için cihazın yön sensörü etkin kalmalıdır Otomatik döndürme kapalıyken bile. Bu düğmeye dokunduğunuzda kullanıcı rotasyonu etkili bir şekilde belirlenir tercihi (Settings.System.USER_ROTATION). WindowManager, bunu kullanır diğer ayrıntılarıyla birlikte görüntüleyebilirsiniz. perspektifini değiştirin. WindowManager, kullanıcı rotasyonunu kullanmaya devam ediyor değiştirme sırasında sistemi hangi rotasyonda başka bir Etkinlik.

Bu GIF'te, ekranı içinde olan bir telefon yatay yönde gösteriliyor.
       dikey yönde. Kullanıcıya bunu yapmak isteyip istemediğini soran bir simge görünür
       ekran yönünü yatay olarak değiştirebilir.
Şekil 1. "Kaydırma"ya sahip öneriyi döndür düğmesi yukarı düğmesi" hareket etkin
'nı inceleyin.

Etkinlikler arasında geçiş yaparken kullanıcı rotasyonu tercihi korunmalıdır. Ancak, çoğu telefon kullanıcısı yalnızca kısa bir süreliğine yatay olarak görünmek istediğinden doğal yön sapması ekledik. Kullanıcı rotasyonu cihazın doğal yönüne sıfırlanır. cihazın doğal yönünün değiştirilmesi. Çoğu telefonda cihazın doğal yönü dikey (0o) olmalıdır. Kullanıcı rotasyonu sıfırlanıyor sadece dikey yönlü bir uygulama kullanırken, telefonu kilitlediğinizde veya başlatıcı çalışma alanına dönülüyor.

Kullanıcılar için rotasyon etkileşimleri son on yılda pek değişmedi. Kullanıcı Sayısı Rotasyon geçmişi göz önüne alındığında bu özelliği bulmak zor olabilir. ve düğme konumlandırması hakkında daha fazla bilgi edinin. Bu nedenle, görüntülenen döndür düğmesi için giriş modu bulunuyor. Giriş yalnızca ilk birkaç düğme etkileşiminde gerçekleşir. Ardından, Giriş modu devre dışı.

Kaynak

Rotasyon önerileri desteği şuraya eklendi: Android 9 Değişikliklerin çoğu dosyalar.

  • services/.../server/policy/PhoneWindowManager.java:
    • WindowOrientationListener çıkışını tüketen kancalar (MyOrientationListener, izlemeden sorumlu sensörler (cihazın döndürülüp döndürülmediğini belirler)
    • Şu durumlarda bile WindowOrientationListener etkin kalır: otomatik döndürme devre dışı (bkz. needSensorRunningLp())
    • Kullanıcı rotasyon tercihine göre sistem rotasyonunu hesaplar (en üstte) screenOrientation etkinliğinin ayarları ve sistem durumu (bkz. rotationForOrientationLw())
    • En popüler etkinliğin belirli bir rotasyona döndürülüp döndürülemeyeceğini belirleyin (bkz. isRotationChoicePossible()) olarak değiştirildi
  • SystemUI/.../statusbar/phone/NavigationBarFragment:
    • Gezinme çubuğu düğmesinin rotasyonda gösterilip gösterilmeyeceğini belirler PhoneWindowManager tarafından gönderilen geri çağırma önerileri (bkz. onRotationProposal())
    • Gezinme çubuğunu döndür düğmesinin ne zaman gizleneceğini gösterir (bkz. setRotateSuggestionButtonState(false)) olarak değiştirildi
    • gezinme çubuğu gizli (genellikle tam ekranda)
    • Cihazın doğal ayarına dönüldüğünde kullanıcı tercihini sıfırlar yön (mRotationWatcher)
    • Gezinme çubuğu düğmesi animasyonu için uygun stili seçer, NavigationBarView uygulamasında uygulandı (bkz. onRotationProposal())
    • Özel animasyonlar da dahil olmak üzere giriş modu mantığı ekler (bkz. Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED) olarak değiştirildi
    • Devre dışı bırakma2 rotasyon işaretini uygular (bkz. disable())
  • SystemUI/.../statusbar/phone/NavigationBarView.java:
    • Beklemedeki rotasyonla eşleşecek stiller düğmesi simge animasyonu (bkz. updateRotateSuggestionButtonStyle()) olarak değiştirildi
    • Herkese açık kullanıcı adları düğmesi görünürlüğündeki değişiklikleri (bkz. setRotateButtonVisibility()), gizlenme mantığı dahil Belirli erişilebilirlik hizmetleri etkinse döndürme düğmesi (en sağdaki gezinme çubuğu düğmesi grubu sıralamasına dayanır)
  • SystemUI/res/layout/menu_ime.xml:
    • Döndür düğmesi için yeni bir KeyButtonView içerir, üst kısımda, IME/klavye seçicinin altında ancak Erişilebilirlik düğmesi
  • SystemUI/res/drawable/ic_sysbar_rotate_button.xml:
    • Karmaşık AnimatedVectorDrawable özelliği gezinme çubuğunu döndür düğmesi
    • Stil (SystemUI/res/values/styles.xml dilinde) şu amaçlarla kullanılır: dönme başlangıç ve bitiş açılarını, aynı çekilebilir öğenin çeşitli başlangıç ve bitiş rotasyonlarını hareket ettirmek için kullanılır
    • Simge renklendirme TintedKeyButtonDrawable ile ayarlandı

Uygulama

Android 9, çalışan rotasyon önerileri yazılım gezinme tuşları (geri, ana sayfa vb.) kullanan cihazlar

Donanım gezinme tuşlarıyla cihazlar oluşturan cihaz üreticileri için kendi Sistem Kullanıcı Arayüzünü tasarlaması ve uygulaması gerekir. veya özelliği devre dışı bırakabilir. Kapıya konan tüm yüzeylerin Cihaz mevcut sisteme göre 90o veya 180o derece tutulduğunda kolayca kullanılabilir. ve hızla erişilebilir durumdadır. Bu nedenlerle, bildirimlerin kullanımı (IME/klavye seçicide yapıldığı gibi) önerilmez.

Bu özelliği kullanmak için gereken donanım gereksinimleri, gereksinimlerle aynıdır otomatik döndürmeyi kullanın.

Kullanıcı rotasyonu tercihinin, uygulama tutarlılığı için (Settings.System.USER_ROTATION), cihazın doğal ayarına sıfırlanır herhangi bir nedenle sistem cihazın doğal dönüşüne göre değiştiğinde otomatik döndürme kapalıyken. Sağlanan uygulama bunu yapar ( NavigationBarFragment.mRotationWatcher) tıklayın.

StatusBarManager.disable2 için geçici olarak yeni bir işaret eklendi rotasyon önerilerinin görünmesini engelleyebilir. Görüntüleyin StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS Bu işaret, dahil olmak üzere, kritik sistem uygulamaları tarafından kullanıldığı için tüm uygulamalarda geçerlidir. Kurulum Sihirbazı. Sağlanan uygulama bunu destekler ( NavigationBarFragment.disable()) bilgileri gösterilir.

Özelliği etkinleştirmenizi ve AOSP'ye uymanızı önemle tavsiye ederiz takip edin. Benzer bir rotasyon deneyimi sunmayı amaçlıyoruz. Günümüzde çoğu telefonda yaşandığı aynı deneyimi yansıtır. otomatik döndürme ve dikey kilitleme arasında geçiş yapın.

Özelleştirme

Döndürme önerileri yalnızca döndürme kilitli modunda (otomatik döndürme kapalı) göründüğünden, yeni yüklemelerde bu özelliğin varsayılan olarak açık otomatik döndürmeyi varsayılan olarak kapatmayı seçebilirsiniz. Görüntüleyin def_accelerometer_rotation inç Varsayılan değişiklikleri yapmak için SettingsProvider/res/values/defaults.xml.

Kullanıcılar, otomatik döndürmenin etkin olup olmadığını kolayca değiştirebilir (varsayılandan bağımsız olarak) Hızlı Ayarlar veya Görüntü ayarları'ndaki döndürme kutusunu kullanarak.

Doğrulama

Test amacıyla bu özellik, kapı kaplaması değiştirilerek kapatılıp açılabilir Settings.Secure değer. Bunu sağlamanın en kolay yolu, aşağıdaki komutu çalıştırın:

adb shell settings put secure show_rotation_suggestions <x>

Kapalı için x değerini 0, açık için 1 olarak ayarlayın.

Giriş modu, test için ilişkili Settings.Secure değer. Bunu sağlamanın en kolay yolu, aşağıdaki komutu çalıştırın:

adb shell settings put secure num_rotation_suggestions_accepted 0