2012-01-11 16 views
7

मैं स्प्लिट टच इवेंट्स काम करने की कोशिश कर रहा हूं, इसका मतलब है कि कई विचारों में अलग-अलग स्पर्श इनपुट का पता लगाने में सक्षम होना।स्प्लिट मोशन इवेंट्स - एकाधिक दृश्यों में इनपुट स्वीकार करें simultaneosly

यह हनीकोम्ब में जोड़ा गया एक विशेषता थी और संगतता पुस्तकालय का उपयोग करके समर्थित किया जा सकता है। वहाँ अधिक जानकारी यहाँ है: http://developer.android.com/sdk/android-3.0.html -> "विभाजन स्पर्श घटनाओं"

यह मूल रूप से कहते हैं के लिए नीचे स्क्रॉल: इससे पहले, केवल एक दृश्य एक समय में स्पर्श घटनाओं को स्वीकार कर सकता है। एंड्रॉइड 3.0 दृश्यों और यहां तक ​​कि खिड़कियों में विभाजित स्पर्श घटनाओं के लिए समर्थन जोड़ता है, इसलिए अलग-अलग विचार एक साथ स्पर्श घटनाओं को स्वीकार कर सकते हैं। जब कोई एप्लिकेशन Android 3.0 को लक्षित करता है तो डिफ़ॉल्ट रूप से स्प्लिट टच ईवेंट सक्षम होते हैं। यही है, जब एप्लिकेशन ने एंड्रॉइड सेट किया है: minSdkVersion या android: targetSdkVersion विशेषता का मान "11" पर है। वहाँ छू शीर्ष एक 'सूचक' के टैग के साथ Log.e घटनाओं पैदा करता है, जबकि नीचे 2 imageviews हैं, https://sites.google.com/site/droidbean/hologramlwp/downloadmodels/attachments/SplitMotionTest.rar?attredirects=0&d=1

परियोजना में:

यहां एक नमूना परियोजना मैं इसे परीक्षण करने के लिए उपयोग कर रहा हूँ है देखें 'पॉइंटर 2' लेकिन जैसा कि आप शीर्ष दृश्य को स्पर्श कर सकते हैं और फिर दूसरा एक अलग उंगली (दोनों अलग-अलग विचारों को छू रहे हैं) के साथ जिंजरब्रेड में पहले दृश्य से केवल संदेश उत्पन्न करता है।

यदि एक ही परियोजना हनीकॉम पर चलती है, तो यह सही तरीके से काम करती है और दोनों विचार उनके संबंधित 'सूचक' लॉग प्रविष्टियां उत्पन्न करते हैं।

तो मेरा सवाल होगा, मैं एक ही प्रभाव को एक जिंजरब्रेड या किसी अन्य निचले एंड्रॉइड संस्करण पर चलने वाले फ़ोन पर कैसे प्राप्त करूं?

+0

आप 'onInterceptTouch' का उपयोग कर सभी स्पर्श ईवेंट पर कब्जा करने की कोशिश की है और फिर उन्हें विचारों के प्रेषण? – JiTHiN

उत्तर

1

चूंकि जिंजरब्रेड विभाजनकारी स्पर्श घटनाओं का समर्थन नहीं करता है, इसलिए एक समाधान दो विचारों पर ओवरले बनाना होगा। जैसे एक्सएमएल में अन्य विचारों के बाद या दो विचारों को कवर करने वाले कोड में एक खाली सापेक्ष लयआउट जोड़ें, चलिए इसे ओवरले कहते हैं। ओवरले के ऑन टचलिस्टर को सेट करें और प्रोग्रामेटिक रूप से यह निर्धारित करें कि ईवेंट किस प्रकार हुआ (x, y)। फिर घटना को निर्धारित दृश्य के माध्यम से टचएवेंट पर भेजें।

यह बहुत दोस्ताना नहीं है, इसलिए उन्होंने इसे ठीक किया है।

उदाहरण:

public boolean onTouch(View v, MotionEvent event) 
    { 
     if(view1.hitTest(event)) 
     { 
      return view1.onTouchEvent(event); 
     } else if(view2.hitTest(event)) 
     { 
      return view2.onTouchEvent(event); 
     } 
     return false; 
    } 
+0

धन्यवाद, यह वह तरीका है जिसका उपयोग मुझे समाप्त करना था। – behelit

संबंधित मुद्दे