Kaydırma aşamalarını anlama

Kaydırma işlemi birden fazla aşamaya ayrılır. Giriş deltası, her aşamanın hareketi kullanma veya harekete tepki verme fırsatına sahip olmasını sağlamak için bir dizi aşama aracılığıyla gönderilir.

Bu döngü boyunca, hem kullanılabilir giriş farkı hem de tüketilen giriş farkı her adımda iletilir. Bu sayede her aşama, kaydırma etkinliğine tepki vermek, etkinliği kullanmak veya dinlemek için gereken tüm bağlama sahip olur.

Kullanıcı kaydırma etkinliğinin kaydırma aşamalarını gösteren kaydırma döngüsü diyagramı
Şekil 1. Kullanıcı kaydırma etkinliğinin kaydırma aşamalarını gösteren bir kaydırma döngüsü diyagramı.

Şekil 1'de gösterildiği gibi, kaydırma işlemi tam olarak şu sırayı izler:

  1. Overscroll: İlk giriş deltasını önce alır. Bu sayede, kaydırma işleminin önce tepki vermesi (ör. etkin bir esneme efektini gevşeterek) sağlanır.
  2. İç içe kaydırma öncesi kaydırma: Kaydırma aşamasından önce giriş deltasına tepki verme fırsatı sunar. Bu aşamada, bazı giriş deltaları tüketilebilir veya yalnızca uygulama çubuğunu daraltma ya da genişletme gibi kullanıcı arayüzü değişikliklerini tetiklemek için izlenebilir.
  3. Giriş deltasını dönüştür: Doğal kaydırma davranışı sağlamak için ham giriş deltasının işaretini düzen yönüne ve yönüne göre ayarlar. Daha fazla bilgi için Giriş deltasını dönüştürme bölümüne bakın.
  4. Kaydırma: Bu aşama, kaydırma kapsayıcısı yapılandırmasına uyacak şekilde ayarlanmış mevcut, kullanılmayan giriş deltasını alır. Genellikle kendi kaydırma ofsetini güncellemek için bu farkı kullanır.
  5. Ham giriş deltasına geri döndür: Kaydırma aşamasındaki kullanılabilir ve tüketilen deltayı orijinal ham giriş delta işaretine geri döndürür.
  6. İç içe yerleştirilmiş kaydırma sonrası kaydırma: Bu aşama, ana kaydırma aşaması tamamlandıktan sonra tepki verir ve yeni güncellenen kullanılabilir ve tüketilen deltaları alır. Kalan tüm girişleri tüketebilir veya az önce tüketilenlerin bağlamını kullanabilir.
  7. Kaydırma sonu: Bu son aşamada, mevcut ve tüketilen son delta değerleri incelenir. Bu aşamaya ulaşan kalan girişler genellikle kullanıcının kaydırılabilir alanın sınırına ulaştığını gösteren esneme veya parlama gibi kenar efektlerini tetiklemek için kullanılır.

Giriş deltasını dönüştürme

İşaretçi girişi delta, beklenen sözleşmelerle eşleşmesi için kaydırma aşamalarında işaret ayarlamaları gerektirir. Delta, Kaydırma aşamasına ulaşmadan önce kaydırma değiştiriciler, giriş deltasını yön, düzen yönü ve sağdan sola bağlamlara göre ayarlar. Bunun nedeni, ham girişin ekrandaki işaretçinin fiziksel piksel hareketini izlemesidir (örneğin, aşağı hareket etmek ekranın Y koordinatını artırarak pozitif bir delta oluşturur). Ancak içeriğin parmağınızla birlikte hareket ettiği "doğal kaydırma"yı elde etmek için aşağı sürükleme, görüntü alanının içerik üzerinde yukarı kayması gerektiği anlamına gelir. Bu da negatif kaydırma ofsetine karşılık gelir.

Fare tekerleği veya dokunmatik alan gibi diğer giriş kaynaklarından gelen giriş deltaları, kaydırma aşamaları boyunca dönüştürülmez.

Örnek: İşaretçi, Modifier.horizontalScroll() kullanılarak sağa hareket eder.

İşaretçinin sağa hareket ettiği bir hareketi gösteren grafik
Şekil 2. İşaretçinin sağa hareket ettiği bir hareketi gösteren grafik.

Deltaların nasıl kullanıldığını ve dönüştürüldüğünü anlamak için işaretçinin sağa hareket ettiği bir hareketin eşlendiği Şekil 2'ye bakın.

  • Kaydırma öncesi: Hareket, 100 değerinde pozitif bir ham giriş deltasıyla başlar.
    • Overscroll bunu gözlemler ve 10 tüketerek 90 bırakır.
    • İç içe yerleştirilmiş kaydırma öncesi kaydırma, üst bileşene tepki verme fırsatı vererek 30 tüketir. Kalan ham fark 60'tır.
  • Dönüşüm A: Kaydırma aşamasına girmeden önce horizontalScroll, kalan pozitif ham deltayı (60) negatif deltaya (-60) dönüştürür. Bu sayede görüntü alanı sola kaydırılır ve içerik, kullanıcının parmağıyla birlikte sağa hareket ediyormuş gibi görünür.
  • Kaydırma: Hedef kaydırılabilir bileşen, kaydırma ofsetini güncellemek için bu dönüştürülmüş deltanın bir kısmını kullanır. Bu örnekte -30 tüketilir ve -30 tüketilmeden kalır.
  • Dönüşüm B: Kullanılmayan kaydırma deltası (-30), iç içe yerleştirilmiş kaydırma ve kaydırma sonu sözleşmesine uyacak şekilde tekrar pozitif ham deltaya (30) dönüştürülür.
  • Kaydırma sonrası: Kalan ham delta, ardışık düzene geri gönderilir.
    • İç içe yerleştirilmiş kaydırma sonrası kaydırma 10 tüketir ve 20 kalır.
    • Kaydırma sonu efekti, esneme veya parlama gibi görsel kenar efektlerini uygulamak için son 20'yi kullanır ve giriş deltasını tamamen 0'a çözer.

İşaretçi girişi delta dönüşümü referansı

Aşağıdaki tabloda, giriş deltalarının farklı aşamalarda ve işaretçi girişi yönlerinde nasıl imzalandığı açıklanmaktadır.

Ham giriş farkı Kaydırma sonu efekti İç içe yerleştirilmiş kaydırma Yatay yönlendirmeli scrollableArea Yatay yönlendirmeli scrollableArea (ters çevrilmiş) Dikey yönlendirmeli scrollableArea Dikey yönlendirmeli scrollableArea (ters çevrilmiş)
İşaretçi YUKARI hareket eder Olumsuz Olumsuz Olumsuz Yok Yok Olumlu Olumsuz
İşaretçi AŞAĞI hareket eder. Olumlu Olumlu Olumlu Yok Yok Olumsuz Olumlu
İşaretçi SOLA hareket eder. Olumsuz Olumsuz Olumsuz Pozitif (Sağdan sola diller için negatif) Negatif (Sağdan sola diller için pozitif) Yok Yok
İşaretçi SAĞA hareket eder. Olumlu Olumlu Olumlu Negatif (Sağdan sola diller için pozitif) Pozitif (Sağdan sola diller için negatif) Yok Yok