2012-08-06 22 views
15

मुझे एक दृश्य आइटम की स्पर्श घटनाओं को संभालने से मेरी स्क्रीन से असली (एक्स, वाई) प्राप्त करने में कुछ परेशानी हो रही है।संपूर्ण स्क्रीन से संबंधित स्क्रीन कॉर्डिनेट कैसे प्राप्त करें, और दृश्य स्पर्श नहीं हुआ?

मैं इस है:

enter image description here

जब मैं दृश्य आइटम स्पर्श, यह मेरे अपने ऊपरी-बाएं कोने में स्थित मूल के साथ समन्वय देता है, और अगर मैं उंगली बाहर देखने के लिए स्लाइड, यह मुझे नकारात्मक निर्देशांक देता है (जब स्लाइडिंग या बाएं)। enter image description here enter image description here

मैं, स्क्रीन में देखें स्थान प्राप्त करने के लिए यह (एक्स, वाई) को जोड़ना चाहते हैं निर्देशांक है कि मैं मिलता है, तो अंतिम परिणाम है कि (0,0) में है पूरी स्क्रीन के ऊपरी-बाएं कोने। enter image description here

मुझे कुल स्क्रीन आकार की भी आवश्यकता है, ताकि मुझे पता चले कि उंगली निचले-दाएं कोने में स्थित है।

मैं इसे कैसे प्राप्त कर सकता हूं?

धन्यवाद।

उत्तर

16

MotionEvent वर्ग getX() और getY() तरीकों जो निर्देशांक, देखने के सापेक्ष वापसी के रूप में आप की खोज की है है।

लेकिन यह भी getRawX() और getRawY() विधियों, जो डॉक्स के अनुसार है कहते हैं:

रिटर्न मूल कच्चे X (या वाई) इस घटना के समन्वय। स्क्रीन पर टच इवेंट्स के लिए, स्क्रीन पर ईवेंट का यह मूल स्थान है, इससे पहले कि इसमें विंडो और दृश्यों के लिए समायोजित किया गया हो।

ऐसा लगता है कि आप इसके बाद क्या कर रहे हैं।

+0

उत्तर के लिए यह सबसे आसान तरीका है, thanx। – Alex

0

स्क्रीन पर View का स्थान प्राप्त करें, तो आप बस अंकगणितीय का उपयोग कर बाकी की गणना कर सकते हैं। How to get the absolute coordinates of a view

+0

यह भी काम करता है, thanx। – Alex

6

स्क्रीन पर लोड किए गए दृश्य के बाद इसका उपयोग करने का प्रयास करें।

int[] location = new int[2]; 
View.getLocationOnScreen(location); 
Log.v(Common.TAG,"left: "+ location[0]); 
Log.v(Common.TAG,"top: "+ location[1]);