एक आसान तरीका कैनवास उपयोग करने के लिए किया जाएगा 4 पक्षीय आकार आकर्षित करने के लिए आकर्षित करता है।
प्रत्येक 4 कोनों पर विचार करें। "छेड़छाड़" आयत पूर्ण आकार होगा स्पर्श किया आयताकार छोटा होगा।
तुम सिर्फ एक बिंदु आप आयत के प्रत्येक भाग के लिए गणना का उपयोग कर अपने चार पक्षीय आकार आकर्षित करने के लिए की जरूरत है। आप स्पर्श स्थिति प्राप्त कर सकते हैं, फिर प्रत्येक बिंदु देने के लिए "वजन" कितना पता लगाएं।
प्रत्येक कोने गणना करने के लिए, आप यह पता लगाने की छुआ समन्वय देने के लिए कितना "वजन" की जरूरत है, और कितना "वजन" अछूता समन्वय देने के लिए। यदि आप ऊपरी बाएं कोने को स्पर्श करते हैं, तो वह कोने स्पर्श किए गए समन्वय का 100% उपयोग करेगा, और अन्य तीन कोनों में सभी अनछुए समन्वय का उपयोग करेंगे।
आप शीर्ष मध्य छुआ, तो आप इस तरह एक आकार मिलेगा:
हम किसी भी स्पर्श स्थान के लिए कोनों की गणना कर सकते कोने से कितनी दूर की गणना के द्वारा अपने स्पर्श
float untouchedXWeight1 = Math.abs(xt - x1)/width;
//maximum of 1, minimum of 0
float untouchedYWeight1 = Math.abs(yt - y1)/height;
float untouchedWeight1 = (untouchedXWeight1 + untouchedYWeight1)/2;
//also maximum of 1, minimum of 0
float touchedWeight1 = 1 - untouchedWeight1;
है
इसलिए उन वजन के साथ, आप अपने x व y स्थितियां कि कोने के लिए गणना कर सकते हैं:
x1 = xUntouched1 * untouchedWeight + xTouched1 * touchedWeight1;
y1 = yUntouched1 * untouchedWeight + yTouched1 * touchedWeight1;
फिर अन्य 3 कोनों के लिए इसी तरह से करते हैं।
का उत्तर मैं इसे व्यू ग्रुप पर लागू नहीं कर सका। क्या आपके पास कोई विचार है? – frankish
क्या आपने पहले एक GLSurfaceView का उपयोग करने का प्रयास किया है? इस प्रश्न में – HalR
: http://stackoverflow.com/questions/7734228/android-accessing-buttons-from-surfaceview उत्तर में से एक मूल बातें दिखाता है: – HalR