6

कल्पना कीजिए कि मेरे पास एक आयताकार छवि है। मैं अगले की तरह एक शैली कैसे बना सकता हूं?किसी छवि से मंडली क्लिप्पैथ कैसे बनाएं?

enter image description here enter image description here

मेरा मतलब है, एक सर्कल में चित्र को काटने, बॉर्डर, छाया और सकल/चमक प्रभाव जोड़ें। अब तक, मैंने छवि को फसल करने के लिए केवल इस स्निपेट कोड को आजमाया है: Cropping circular area from bitmap in Android लेकिन बस यही। मुझे नहीं पता कि एंड्रॉइड में शेष घटकों को कैसे किया जाए।

+0

मैं एक गोल कोने कार्यान्वयन पोस्ट करता हूं, उम्मीद है कि यह आपकी मदद करेगा, http://stackoverflow.com/a/19858771/1294681 – VinceStyling

उत्तर

16

इस प्रभाव को प्राप्त करने के लिए एक आसान तरीका है Canvas.drawCircle() उपयोग करने के लिए है और एक BitmapShader:

BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); 

Paint p = new Paint(); 
p.setShader(s); 

myCanvas.drawCircle(centerX, centerY, radius, p); 

छाया करने के लिए बस रंग पर Paint.setShadowLayer() फोन (यह केवल यदि आप एक गुप्त में प्रभाव आकर्षित काम करेंगे Bitmap या यदि आपका View सॉफ़्टवेयर परत का उपयोग करता है - View.setLayerType() पर कॉल करके सेट करें -)।

Paint.Style.STROKE शैली (जिसे आप Paint.setStyle() पर कॉल करके सेट कर सकते हैं) का उपयोग करके सीमा को एक और सर्कल खींचकर खींचा जा सकता है।

अंत में आप अपने पहले सर्कल के शीर्ष पर एक सर्कल, अंडाकार या Path ड्राइंग करके चमक खींच सकते हैं। आपको अपने पेंट पर LinearGradient शेडर का उपयोग करने की आवश्यकता होगी और आपको चमक को क्लिप करने की भी आवश्यकता होगी। आप दो तरह से कर सकते हैं:

  1. आप एक Bitmap, जो है मैं क्या सिफारिश करेंगे में पूरे प्रभाव बना रहे हैं, बस रंग के Xfermode एक new PorterDuffXfermode(PorterDuff.Mode.SRC_IN) करने के लिए सेट।
  2. यदि आप सीधे स्क्रीन पर प्रभाव खींच रहे हैं तो आप गोलाकार क्लिप सेट करने के लिए बस Canvas.clipPath() का उपयोग कर सकते हैं। ध्यान दें कि यह केवल एंड्रॉइड 4.3 के रूप में हार्डवेयर त्वरण के साथ काम करेगा।
संबंधित मुद्दे