Kaydırma aşamalarını anlama

Kaydırma işlemi birden fazla aşamaya ayrılır. Giriş farkı, her aşamanın hareketi kullanma veya harekete tepki verme fırsatı bulmasını sağlamak için bir dizi aşama üzerinden gönderilir.

Bu döngü boyunca hem kullanılabilir giriş deltası hem de tüketilen giriş deltası her adımda iletilir. Bu, her aşamaya kaydırma etkinliğine tepki vermek, onu kullanmak veya dinlemek için gereken tam bağlamı sağlar.

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

Şekil 1'de gösterildiği gibi, kaydırma işlemi tam olarak şu sırayla gerçekleşir:

  1. Aşırı kaydırma: İlk giriş deltası önce alınır. Bu sayede aşırı kaydırma, önce tepki verme şansı elde eder (örneğin, etkin bir esneme efektini gevşeterek).
  2. İç içe yerleştirilmiş 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ı kullanılabilir veya yalnızca bir 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ürme: Doğal kaydırma davranışı sağlamak için düzen yönüne ve doğrultusuna göre ham giriş deltasının işaretini ayarlar. Daha fazla bilgi için Giriş deltasını dönüştürme bölümüne bakın.
  4. Kaydırma: Bu aşamada, kaydırma kapsayıcısı yapılandırmasına uyacak şekilde ayarlanmış, kullanılmamış giriş deltası alınır. Genellikle kendi kaydırma uzaklığını güncellemek için bu delta değerini kullanır.
  5. Ham giriş deltasını 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. Kaydırma sonrası iç içe 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 kullanılabilir girişleri tüketebilir veya yeni tüketilenlerin bağlamını kullanabilir.
  7. Kaydırma sonu: Bu son aşamada, son kullanılabilir ve tüketilen deltalara bakılır. 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ı belirten esneme veya parıltı gibi kenar efektlerini tetiklemek için kullanılır.

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

İşaretçi girişindeki 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ştiricileri, yönlendirmeye, düzen yönüne ve sağdan sola bağlamlara göre giriş deltasını ayarlar. Bunun nedeni, ham girişin ekrandaki işaretçinin fiziksel piksel hareketini izlemesidir (ör. aşağı hareket ettirmek ekranın Y koordinatını artırarak pozitif bir delta elde edilmesini sağlar). Ancak içeriğin parmağınızla birlikte hareket ettiği "doğal kaydırma" için aşağı sürükleme, görünüm alanının içerik üzerinde yukarı kayması gerektiği anlamına gelir. Bu da negatif kaydırma uzaklığına 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: Modifier.horizontalScroll() kullanılarak işaretçi sağa hareket ediyor

İş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 Şekil 2'ye bakın. Bu şekil, işaretçinin sağa hareket ettiği bir hareketi gösterir.

  • Kaydırma öncesi: Hareket, 100 değerinde pozitif bir ham giriş deltasıyla başlar.
    • Aşırı kaydırma bunu gözlemler ve 10 birim tüketerek 90 birim bırakır.
    • İç içe yerleştirilmiş kaydırma öncesi kaydırma, üst bileşene 30 tüketerek tepki verme fırsatı verir. Kalan ham delta 60'tır.
  • Dönüşüm A: Kaydırma aşamasına girmeden önce horizontalScroll, kalan pozitif ham delta değerini (60) negatif delta değerine (-60) dönüştürür. Bu, içerik kullanıcının parmağıyla sağa doğru hareket ediyormuş gibi görünmesi için görünüm alanının sola kaymasını sağlar.
  • Kaydırma: Hedef kaydırılabilir bileşen, kaydırma uzaklığını 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: Tüketilmeyen kaydırma farkı (-30), iç içe kaydırma ve kaydırma sonu sözleşmesine uygun olması için tekrar pozitif bir ham farka (30) dönüştürülür.
  • Kaydırma sonrası: Kalan ham delta, ardışık düzende tekrar yukarı geçirilir.
    • Kaydırma sonrası iç içe kaydırma, 10 birim tüketerek 20 birim bırakır.
    • Kaydırma sonu efekti, görsel kenar efektleri (ör. uzatma veya parlama) oluşturmak için son 20'yi kullanır ve giriş deltası 0 olarak tamamen çözülür.

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

Aşağıdaki tabloda, işaretçi girişi için farklı aşamalarda ve yönlerde giriş deltalarının nasıl imzalandığı özetlenmektedir.

Ham giriş delta değeri Kaydırma sonu efekti İç içe yerleştirilmiş kaydırma Yatay yönlü scrollableArea scrollableArea yatay yönle (ters) Dikey yönlü scrollableArea scrollableArea (ters) dikey yönlendirmeli
İş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 (RTL 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 (RTL için negatif) Yok Yok