2011-10-11 13 views

cevap

4

ACTION_MASK (örneğin birinci parmak dokundu ikinci parmak dokundu, vs.) getAction() döndürülen değerin ilk 8 bit gerçek işlem parçası ve asıl işlem ve işaretçi tanımlayıcı ayırmak için kullanılır, böylece sizi bitwise-AND action mask (= 11111111 = 255 = 0xff) ile, yalnızca eylemle ve işaretçi bilgilerinin hiçbiriyle kalmazsınız.

Android 1.5/API düzey 3'te, çoklu işaretçiler (yani çoklu dokunma) için MotionEvent sınıfında destek almadık. Tek bir işaretçi olayı için işaretçi bitleri ayarlanmamıştır. olmak sabit Kendi eylem maskesi tanımlamak için deneyebilirsiniz, bu işe yaramazsa o

if ((event.getAction() == MotionEvent.ACTION_MOVE) {...} 

istenmeyen bir durumda: Bu nedenle, sadece belirli bir eylem için onay almak için istenen eylemin sabiti ile olay karşılaştırabilirsiniz 255 ve bitwise-AND daha sonraki API sürümlerinde olduğu gibi.

MotionEvent için docs'da (veya gerçekten herhangi bir Android başvuru sayfasında), API düzeyine göre filtrelemek için bir onay kutusu vardır. API düzey 3'ü seçerseniz, o sınıfın durumunu o sırada görebilirsiniz. Farklı işaretçilerle ilgili tüm yöntemler ve sabitler grileştirilir.

+0

Zaman ayırdığınız için çok teşekkür ederim. Yine de merak ediyorum, çünkü bu ifade, yeni android sürümlerinde yanlış olarak çözülecek. Bu * sadece 3'ten şimdi herhangi bir cihaz/seviye üzerinde çalışacak mı? Evet ise, proje oluşturmaya girdiğim hedef/min_sdk bilgisi yüzünden mi? – unR

+1

İfade, daha sonraki API düzeyleri için bile tek işaretçi dokunma etkinlikleri için her zaman geçerlidir. Tek bir işaretçi için, diğer (işaretçi) bitler ayarlanmaz, böylece maskeye gerek yoktur. – antonyt

+0

çok teşekkür ederim. kabul edilmiş – unR

İlgili konular