Create ImageView that is round, so click will work on round area only android -
नमस्ते मैं टैबला ऐप बना रहा हूं,
उदाहरण के लिए
इसे गोल के बाहर जवाब नहीं देना चाहिए लेकिन ImageView आयत है इसलिए इसे
मुझे यकीन है कि आप इस समस्या को समझ सकते हैं
ImageView आयताकार है लेकिन इसकी छवि गोल है, लेकिन मैं राउंड इमेज पर केवल क्लिक का पता लगाना चाहता हूं ...
ऐसा प्रतीत होता है कि आपको गणना करना होगा कि उपयोगकर्ता परिपत्र व्यू के भीतर छू रहा है या नहीं। यह कस्टम इमेज्यूव्यू क्लास के स्पर्श इवेंट को ओवरराइड करके प्राप्त करना होगा जो मुझे लगता है कि आपने पहले ही लिखा है।
मूल रूप से मैंने सोचा था कि एक परिपत्र क्षेत्र ड्राइंग पर्याप्त होगा, लेकिन ऐसा नहीं है।
स्यूडोकोड:
सार्वजनिक वर्ग CustomImageView लागू ImageView {निजी बिंदु केंद्र पृष्ठ; निजी फ्लोट त्रिज्या; @ ओवरराइड सुरक्षित वॉड ऑन ड्रा (कैनवास कैनवास एफ) {ड्रॉ योग्य drawable = getDrawable (); यदि (सेंटरपॉइंट == रिक्त) {centerPoint = नया बिंदु (getWidth () / 2, getHeight () / 2); / * * यदि त्रिज्या किनारों तक फैली हुई है, लेकिन यदि परिपत्र कोड * पहले से ही मौजूद है तो हमें पहले से ही पता होना चाहिए कि इस बिंदु पर त्रिज्या क्या है I * / त्रिज्या = getWidth () / 2; } / * * एक चक्र को छेड़छाड़ करने के लिए शेष ड्रा कोड प्राइवेट बूलियन इन्ससाइड सीक्रिकल (पॉइंट टू पॉइंट) {इंट दूरी = (इंट) मैथ। (मठ। पॉव (छुआ पॉइंट.एक्स - सेंटरपॉइंट.एक्स, 2) + मैथो। पॉव (छुआ पॉइंट.आई - सेंटरपॉइंट। 2, 2) ); अगर (दूरी और लेफ्टिनेंट; मथपॉ (त्रिज्या, 2)) {वापस सत्य; } अन्य {वापसी झूठी; }} @ ओवरराइड पब्लिक बूलियन ऑन टच एवेन्ट (मोशन इवेंट इवेंट) {प्वाइंट पॉइंट = न्यू प्वाइंट (मैथ्रीयर (इवेंट.एटीएक्स ()), मैथ्रॉइड (इवेंट। जीई ())); अगर (इन्ससाइड कर्च (छुआ पॉइंट)) {वापसी सुपर। टॉईचईवेंट (इवेंट); } वापस सच; }} अब मैं इस पर विस्तार करने के लिए इसे मेरे छविविज वर्ग में जोड़ना चाहूंगा और जब चाहें तब छवि के भीतर ही टच ईवेंट प्रदान कर सकता हूं।
अगर छवि किनारों तक सभी तरह से जाती है तो त्रिज्या तय करना थोड़ा आसान है। अन्यथा, वास्तविक क्षेत्र के त्रिज्या क्या है यह पता लगाने में थोड़ा अतिरिक्त किया जाना चाहिए।
Comments
Post a Comment