निर्देशांक द्वारा दृश्य में तत्व कैसे ढूंढें यदि मुझे निर्देशांक (एक्स, वाई) पिक्सेल (ऑन टचवेन्ट विधि और getX(), getY) मैं तत्व को कैसे प्राप्त कर सकता हूं। बटन या टेक्स्ट इत्यादि .... एक्स, वाईएक्स, वाई एंड्रॉइड
उत्तर
आप प्रत्येक बच्चे के getHitRect(outRect)
का उपयोग कर सकते हैं और जांच सकते हैं कि बिंदु परिणामस्वरूप आयत में है या नहीं। यहां एक त्वरित नमूना है।
for(int _numChildren = getChildCount(); --_numChildren)
{
View _child = getChildAt(_numChildren);
Rect _bounds = new Rect();
_child.getHitRect(_bounds);
if (_bounds.contains(x, y)
// In View = true!!!
}
आशा इस मदद करता है,
FuzzicalLogic
एंड्रॉयड उपयोग dispatchKeyEvent/dispatchTouchEvent कुंजी/स्पर्श घटना को संभालने के लिए सही देखने लगता है, यह एक जटिल प्रक्रिया है। चूंकि कई विचारों में (x, y) बिंदु शामिल हो सकता है।
लेकिन अगर आप बस सबसे जहाज़ की छत पर राय यह है कि (एक्स, वाई) बिंदु को कवर लगाना चाहते हैं यह आसान है।
1 getLocationOnScreen उपयोग करें() absoulte स्थिति प्राप्त करने के लिए।
2 getWidth उपयोग करें(), getHeight() यह पता लगाने की है कि क्या दृश्य (एक्स, वाई) बिंदु को कवर किया।
3 Cacluate पूरे दृश्य पेड़ में देखने का स्तर। (GetParent (कॉल) रिकर्सिवली या कुछ खोज विधि का उपयोग करें)
4 का मानना है कि दोनों बिंदु को कवर किया और सबसे बड़ी स्तर का पता लगाएं।
एक से थोड़ा अधिक पूरा जवाब है कि किसी भी ViewGroup
स्वीकार करता है और रिकर्सिवली में दिया एक्स दृश्य, वाई के लिए खोज करेंगे।
private View findViewAt(ViewGroup viewGroup, int x, int y) {
for(int i = 0; i < viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
if (child instanceof ViewGroup) {
View foundView = findViewAt((ViewGroup) child, x, y);
if (foundView != null && foundView.isShown()) {
return foundView;
}
} else {
int[] location = new int[2];
child.getLocationOnScreen(location);
Rect rect = new Rect(location[0], location[1], location[0] + child.getWidth(), location[1] + child.getHeight());
if (rect.contains(x, y)) {
return child;
}
}
}
return null;
}
ही समाधान https://stackoverflow.com/a/10959466/2557258 के रूप में लेकिन kotlin में:
fun getViewByCoordinates(viewGroup: ViewGroup, x: Float, y: Float) : View? {
(0 until viewGroup.childCount)
.map { viewGroup.getChildAt(it) }
.forEach {
val bounds = Rect()
it.getHitRect(bounds)
if (bounds.contains(x.toInt(), y.toInt())) {
return it
}
}
return null
}
- 1. एक्स, वाई
- 2. वाई = एक्स
- 3. एक्स, वाई स्थिति
- 4. सी ++ पॉलिमॉर्फिज्म ((एक्स *) वाई) -> foo() बनाम ((एक्स) * वाई) .foo()
- 5. एक्स, वाई, जे
- 6. bufferedImage.getRGB (एक्स, वाई) अल्फा
- 7. शोर एक्स, वाई डेटा
- 8. एक्स, वाई के बजाए एटान 2 वाई, एक्स के तर्क क्यों हैं?
- 9. एक्स एक्स डिस्प्ले वाई अगर वाई (खराब शीर्षक मुझे पता है)
- 10. जावा Matcher समूहों: बीच अंतर को समझना "(? एक्स | वाई)" और "(: एक्स?) | (: वाई)"
- 11. एक्स-वाई-जेड तिथि तक कितने दिन?
- 12. अजीब एक्स और वाई POST मान
- 13. स्ट्रिंग से एक्स और वाई समन्वय निकालें
- 14. एक्स, वाई, जेड 2 डी सर
- 15. सीएसएस: ओवरफ्लो-वाई: स्क्रॉल; ओवरफ़्लो- एक्स: दिखाई
- 16. डब्ल्यूपीएफ पॉपअप कंट्रोल - एक्स, वाई कोऑर्डिनेट्स
- 17. जावा के लिए (एक्स: वाई) निष्पादन
- 18. एएस 3 एक्स और वाई संपत्ति परिशुद्धता
- 19. 2 डी अंक (एक्स, वाई, जेड)
- 20. साथ एक एक्स-वाई ग्राफ Ploting "चार"
- 21. सीएसएस पृष्ठभूमि-दोहराना एक्स और वाई
- 22. लाटेक्स फूटर में पृष्ठ एक्स का वाई
- 23. सीएसएस ओवरफ्लो-वाई: दृश्यमान, ओवरफ़्लो-एक्स: स्क्रॉल
- 24. मैं वाई वाई वाई वाई-एमएम-डीडी प्रारूप (ओएस एक्स) बैश में वर्तमान दिनांक कैसे प्राप्त कर सकता हूं?
- 25. एमएम/डीडी/वाई वाई वाई वाई वाई वाई वाई वाई-एमडी-डीडी में कैसे परिवर्तित करें?
- 26. [एक्स, वाई, जेड] के बीच क्या अंतर है। प्रत्येक {| एम | एम} शामिल करें और एक्स, वाई, जेड शामिल हैं?
- 27. वाई = 0
- 28. डीडी/एमएम/वाई वाई वाई और वाई वाई वाई-एमएम-डीडी के बीच कनवर्टिंग तिथि?
- 29. एमई/वाईवाईवाई, एमएम/वाई वाई वाईवाई, एम/वाई वाई या एमएम/वाई वाई प्रारूप
- 30. एंड्रॉइड में एक बटन के एक्स एंड वाई निर्देशांक पुनर्प्राप्त करें?
मैंने कोशिश की है और यह काम करता है। –
बहुत अच्छा काम करता है लेकिन ऐसा लगता है कि बच्चा शून्य हो सकता है, इसलिए NullPointerException को रोकने के लिए चेक की आवश्यकता है। –
यह सही काम करता है। –