जिस ऐप पर मैं वर्तमान में काम कर रहा हूं वह बटन के रूप में बहुत सारे छवि दृश्यों का उपयोग करता है। इन बटनों पर ग्राफिक्स बटन के किनारों को फीका करने के लिए अल्फा चैनल का उपयोग करते हैं और उन्हें अनियमित दिखते हैं। वर्तमान में, हमें प्रत्येक बटन के लिए 2 ग्राफिक्स (चयनित/केंद्रित/दबाए गए राज्य के लिए और दूसरा डिफ़ॉल्ट अचयनित स्थिति के लिए) उत्पन्न करना होगा और प्रत्येक बटन के लिए एक XML फ़ाइल में परिभाषित एक StateListDrawable का उपयोग करना होगा।स्पर्श पर टिंट/मंद खींचने योग्य
हालांकि यह ठीक काम करता है, यह बेहद अपर्याप्त लगता है क्योंकि सभी चयनित ग्राफिक्स अचयनित बटनों के बस रंग वाले संस्करण हैं। इन्हें उत्पादन करने में समय लगता है (हालांकि थोड़ा) और अंतिम एपीके में जगह लेना। ऐसा लगता है कि इसे स्वचालित रूप से एक आसान तरीका होना चाहिए।
ऐसा लगता है कि सही समाधान, प्रत्येक बटन के लिए ImageViews का उपयोग करना है और इसकी रंगीन विशेषता को रंगस्टेटलिस्ट में निर्दिष्ट करना है। इस दृष्टिकोण का लाभ यह है कि सभी बटनों के लिए केवल एक ही एक्सएमएल कलरस्टेटलिस्ट की आवश्यकता होती है (जो एक ही टिंट साझा करते हैं)। हालांकि यह काम नहीं करता है। जैसा कि here का उल्लेख किया गया है, छवि दृश्य एक संख्याफॉर्मेट अपवाद फेंकता है जब टिंट को प्रदान किया गया मान एक रंग के अलावा कुछ भी है।
मेरा अगला प्रयास चयनित ड्रॉइंग के लिए लेयर ड्रायबल का उपयोग करना था। परत सूची के अंदर, हमारे पास अर्ध-पारदर्शी आयताकार द्वारा ढेर स्टैक के नीचे मूल छवि होगी। यह बटन ग्राफिक के ठोस भागों पर काम किया। हालांकि किनारों को पूरी तरह से पारदर्शी माना जाता था, अब शीर्ष परत के समान रंग थे।
क्या किसी को भी इस समस्या का सामना करना पड़ा है और उचित समाधान मिला है? मैं एक्सएमएल दृष्टिकोणों के साथ रहना चाहता हूं लेकिन संभवतः एक साधारण छवि दृश्य उप-वर्ग को कोडित करूंगा जो कोड में आवश्यक टिनटिंग करेगा।
मैं इसे 9-पैच फ़ाइलों के लिए कैसे अच्छी तरह से काम कर सकता हूं, ताकि छवि के पूरे गैर-पारदर्शी क्षेत्र को स्पर्श घटनाओं पर अंधेरा कर दिया जा सके? वर्तमान में यह 9-पैच छवियों के साथ क्या करता है केवल उस भाग को बदलना है जिसे छवि की सामग्री के रूप में परिभाषित किया गया है, न कि पूरी छवि स्वयं ... –