SORU
6 Mart 2012, Salı


Android: onİnterceptTouchEvent arasındaki Fark dispatchTouchEvent?

Android onInterceptTouchEvent dispatchTouchEvent arasındaki fark nedir?

Android geliştirici Kılavuzu'na göre, her iki yöntem de dokunma olayı (MotionEvent) yolunu kesmek için kullanılabilir, ama fark nedir?

Nasıl onInterceptTouchEvent, dispatchTouchEvent onTouchEvent birlikte Manzaralı bir hiyerarşi (ViewGroup) içinde etkileşim?

CEVAP
6 ŞUBAT 2013, ÇARŞAMBA


Bu sır perdesini aralamak için en iyi yer, kaynak kodu. Doktorlar ne yazık ki bu açıklama konusunda yetersiz kalmaktadır.

dispatchTouchEvent aslında Etkinlik, View ve ViewGroup tanımlanır.Dokunma olayları yönlendirmek için nasıl karar bir kumanda gibi düşün.

Örneğin, en basit örnek buGörünüm.dispatchTouchEventya da dokunma olayı yönlendirirOnTouchListener.onTouchya uzatma yöntemi için tanımlı değilonTouchEvent.

İçinViewGroup.dispatchTouchEventişler çok daha karışık. Çocuk kendi görüşlerini bir olay (arama çocuk.tarafından almalısınız anlamaya ihtiyacı var dispatchTouchEvent). Bu temelde bir hit görünüm sınırlayıcı dikdörtgen dokunmatik noktalarının koordinatlarını içeren anlamaya nerede algoritması test ediyor.

Ama uygun alt görüntülemek için olay gönderme önce, ana ajan ve/veya olay hep birlikte kesmek. Bu nedironİnterceptTouchEventiçin var. Bu yöntemi ilk vuruş testi yapmadan önce çağırır ve eğer bu olay (onİnterceptTouchEvent doğru döndürerek) kaçırıldı eğer bir gönderirACTİON_CANCELçocuğa dokunma, olay uzaklaşabiliyorlar çok bakan işleme (önceki dokunma olayları) ve sonra üst düzeyde dokunma olayları için gönderilir itibarenonTouchListener.onTouchtanımlanmış yaonTouchEvent(). Bu durumda da, onİnterceptTouchEvent bir daha asla denir.

Hatta geçersiz kılmak için [Etkinlik|ViewGroup|View] istiyorsunuz.dispatchTouchEvent? Bazı özel muhtemelen olmamalıdır yönlendirme yapıyorsan.

Ana uzatma yöntemleri ViewGroup.eğer casus veya üst düzey Görünüm ve dokunma olay/yakalamak istiyorsanız onİnterceptTouchEvent.onTouchListener/View.ana olay işleme için onTouchEvent.

Aşırı karmaşık tasarım ımo ama android API tüm tüm sadelik daha doğru esneklik daha yalın.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Autocar

    Autocar

    11 Mart 2006
  • Incredible Tutorials

    Incredible T

    27 EKİM 2006
  • Mark Halberstadt

    Mark Halbers

    19 ŞUBAT 2010