Jetpack Compose Glimmer'da dolaylı işaretçi girişlerini işleme

Uygun XR cihazlar
Bu kılavuz, bu tür XR cihazlar için deneyimler oluşturmanıza yardımcı olur.
Ses ve
Ekran Gözlükleri

onIndirectPointerGesture değiştiricisi, bileşenin yüksek düzeydeki dolaylı işaretçi etkinliklerini (ör. bir cihazın dokunmatik alanından kaynaklananlar) almasına ve bunlara yanıt vermesine olanak tanır. Dokunmatik yüzeyden veya benzer bir kaynaktan gelen hareketleri yakalamak ve işlemek için bu değiştiriciyi kullanın.

API yüzeyi

Uygulamanızın işleme sürecini kontrol etmek için kullanabileceği dört geri çağırma vardır:

  • onClick: Önemli bir yatay hareket olmadan başarılı bir dokunma veya tıklama işlemiyle tetiklenir.
  • onSwipeForward: Yatay kaydırma, ileri yönde mesafe ve hız eşiğini aştığında tetiklenir.
  • onSwipeBackward: Yatay kaydırma, geriye doğru yönde mesafe ve hız eşiğini aştığında tetiklenir.
  • Enabled: false olarak ayarlandığında değiştirici yoksayılır ve geri çağırma işlemi yapılmaz.

Kaydırma ve ekranı kaydırma için sistem davranışı

Sistem, tıklama ve kaydırma arasında ayrım yapmak için dokunma eğimi eşiğini kullanır.

  • İşaretçi, kapalı durumdayken önemli ölçüde hareket ederse onClick iptal edilir.
  • İşaretçi hareket sırasında önemli ölçüde geri giderse kaydırma hareketi geçersiz kılınır.

Örnek: Bir bileşende kaydırma ve tıklama işlemlerini yönetme

Aşağıdaki kod, odaklanılabilir bir Box üzerinde kaydırma ve tıklama işlemlerinin işlenmesini ayarlar:

@Composable
@Sampled
fun OnIndirectPointerGestureSample() {
    Box(
        modifier =
            Modifier.fillMaxSize()
                .onIndirectPointerGesture(
                    enabled = true,
                    onSwipeForward = { /* onSwipeForward */ },
                    onSwipeBackward = { /* onSwipeBackward */ },
                    onClick = { /* onClick */ },
                )
                .focusTarget()
    ) {
        // App()
    }
}

Kodla ilgili önemli noktalar

  • onIndirectPointerGesture odaklanmayı gerektirir. Bu nedenle, Box öğesinin odaklanılabilir olması için focusTarget de uygulanır. focusTarget veya surface gibi başka bir odaklanmayı sağlayan değiştiriciyi kullanabilirsiniz. Odaklanma olmadan değiştirici, dolaylı işaretçi etkinliklerine göre işlem yapamaz.
  • Bu örnekte hem onSwipeForward hem de onClick geri çağırmaları uygulanır. Bu nedenle, algılanan kaydırma ve tıklama hareketleri yakalanıp tüketilir ve üst kapsayıcılara ulaşmaz. Ancak, bir hareketi üst kapsayıcıdaki onIndirectPointerGesture değiştiricisine iletmek için belirli bir geri çağırmayı boş da bırakabilirsiniz. -