2009-09-11 2 views
32

मैं OnTouchListener लागू कर रहा हूं और मोशनएवेंट ऑब्जेक्ट प्राप्त कर रहा हूं। कुछ ACTION_MOVE घटनाएं पूर्ण एक्स/वाई निर्देशांक की रिपोर्ट करती हैं, जबकि कुछ रिपोर्ट संबंधित सापेक्ष निर्देशांक करती हैं।मुझे कैसे पता चलेगा कि मोशनवेन्ट सापेक्ष या पूर्ण है या नहीं?

मैं MotionEvent से कैसे पूछ सकता हूं कि वर्तमान में यह किस प्रकार के निर्देशांक का प्रतिनिधित्व करता है?

उत्तर

60

आप निरपेक्ष निर्देशांक के लिए इन का उपयोग कर सकते (निरपेक्ष, डिवाइस की स्क्रीन के बारे में):

MotionEvent.getRawX()

MotionEvent.getRawY()

अन्य तरीकों, getX() और getY(), आप निर्देशांक लौटना चाहिए View के सापेक्ष जो उन्हें प्रेषित किया गया।

+6

मैंने कहा GetRawX() और getRawY() का उपयोग करके मेरी समस्या हल कर दी है। हालांकि मुझे यह एक निराशाजनक समाधान लगता है क्योंकि यह सुझाव देता है कि getX() और getY() बेकार हैं, भले ही ऐसा लगता है कि वे मोशनवेन्ट क्लास के लिए प्राइमेट विधियां होनी चाहिए। एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए। – PeyloW

+1

बढ़िया, आपने मुझे भविष्य में सिरदर्द बचाया। – Tom

+6

जबकि (सत्य) { System.out.println ("धन्यवाद"); } –

33

यह एंड्रॉइड मंच पर एक सीमा है।

MotionEvent कभी-कभी दृश्य के सापेक्ष पूर्ण एक्स और वाई निर्देशांक लौटाएगा, और कभी-कभी पिछली गति घटना के सापेक्ष समन्वय को वापस कर देगा।

ACTION_DOWN के रूप में भेजा गया एक ईवेंट हमेशा पूर्ण होगा, अन्य सभी घटनाएं अलग-अलग होंगी। वर्तमान प्रकार के निर्देशांक के लिए MotionEvent से पूछने का कोई तरीका नहीं है।

इसका मतलब है कि व्यवहार में getX() और getY() कई उपयोग के मामलों के लिए बेकार हैं, और आप getRawX() और getRawY() कि पूर्ण निर्देशांक, डिवाइस स्क्रीन के सापेक्ष वापस जाने के लिए गारंटी है पर अपने आवेदन तर्क का आधार होना चाहिए।

+3

के _relative_ निर्देशांक में जोड़ना होगा, क्या यह अभी भी मामला है? मुझे getX मिल रहा है एक सापेक्ष निर्देशांक के लिए बस ठीक काम करने के लिए ... – jjxtra

4

मानचित्र दृश्य का उपयोग करते समय, मैं MotionEvent.getRawX से विंडो के सामग्री दृश्य (Window.ID_ANDROID_CONTENT) के View.getLeft() और View.getTop() को घटाकर रिश्तेदार एक्स और वाई निर्देशांक प्राप्त करने में सक्षम था () और क्रमशः MotionEvent.getRawY()।

समाधान यहाँ पर चर्चा की है:

http://andmobidev.blogspot.com/2010/01/getting-relative-coordinates-from.html

यह सापेक्ष एक्स निर्धारण करने के लिए काम करना चाहिए और वाई मुख्य लेआउट दृश्य में समन्वय करता है।