2011-02-07 21 views
6

मैंने अपनी पीएनजी फ़ाइलों को बैंडिंग के साथ मुद्दों में भाग लिया है। समस्या में खुदाई ने दो समाधान दिए हैं। दोनों व्यक्तिगत रूप से समझ में आते हैं, लेकिन एक साथ वे नहीं करते हैं। समाधान मैंने खोजा है:भ्रमित पीएनजी बैंडिंग समाधान

1) पीएनजी फ़ाइल को "कच्चे" फ़ोल्डर में ले जाएं। यह एएपीटी को छवि को "अनुकूलित करने" से रोकता है जिसके परिणामस्वरूप बैंडिंग होती है।

2) अपनी गतिविधि की विंडो के पिक्सेल प्रारूप को RGBA_8888 में बदलें (यानी ऑनक्रेट इस लाइन को जोड़ें "getWindow()। SetFormat (PixelFormat.RGBA_8888)")। एंड्रॉइड 2.2 पर और डिफ़ॉल्ट पिक्सेल प्रारूप कम 16-बिट (565) है।

मैंने इन दोनों की कोशिश की है और वे मेरी छवियों में बैंडिंग प्रभाव को सही करते हैं, हालांकि अब मैं एंड्रॉइड क्या कर रहा हूं, इस बारे में और भी उलझन में हूं।

एक ओर, यदि मैं अपने पीएनजी को खींचने योग्य फ़ोल्डर में छोड़ देता हूं तो यह "अनुकूलित" होता है जिसके परिणामस्वरूप छवि में बैंडिंग प्रभाव होता है। जब मैं पिक्सेल प्रारूप 32-बिट में बदलता हूं तो यह जादुई रूप से चला जाता है। अगर छवि "अनुकूलित" थी, तो मुझे बैंडिंग रहने की उम्मीद थी।

दूसरी ओर, यदि मैं पीएनजी को कच्चे फ़ोल्डर में ले जाता हूं तो यह अच्छी ढाल बनाए रखेगा और अच्छी तरह से प्रदर्शित होगा, भले ही पिक्सेलफॉर्मेट 16-बिट माना जाता है।

अगर किसी के पास क्या हो रहा है में कोई अंतर्दृष्टि है तो मैं इसकी सराहना करता हूं।

धन्यवाद,

-Dan

उत्तर

8

मैं इसके काफी सरल विश्वास है:

आप अपने बिटमैप के लिए एक डिफ़ॉल्ट अनुकूलन के रूप में अपने गतिविधि (RGBA_8888) का पिक्सेल प्रारूप के बारे में सोचना है।

यदि यह सेट नहीं है, तो 2.2 से पहले, डिफ़ॉल्ट रूप से यह आपके बिटमैप को RGB_565 पर संपीड़ित करेगा।

लेकिन यदि आप प्रोग्रामेटिक रूप से बिटमैप बनाना चाहते हैं और इसे RGBA_8888 पर सेट करना चाहते हैं, तो इसका उपयोग ऐप द्वारा किया जाएगा।

वही लागू होता है जब आप कच्चे फ़ोल्डर में अपना बिटमैप डालते हैं: भले ही डिफ़ॉल्ट पिक्सेलफॉर्मैट RGB_565 पर सेट हो, फिर भी गतिविधि इसका उपयोग करेगी क्योंकि यह "अनुकूलन" के बिना है।

जब आप कच्चे फ़ोल्डर में अपना बिटमैप डालते हैं तो इसे बिल्कुल भी संपीड़ित नहीं किया जाएगा और डिफ़ॉल्ट पिक्सेलफॉर्मैट अभी भी RGB_565 है।

+1

आह, इसलिए डिवाइस * 32-बिट रंग प्रदर्शित करने में सक्षम है, लेकिन गतिविधि केवल 2.3-बिट्स का उपयोग करने के लिए सेट है यदि मैं आपकी प्रतिक्रिया सही ढंग से पढ़ रहा हूं। – Dan

+0

लगभग: "लेकिन गतिविधि 2.3 से पहले डिफ़ॉल्ट रूप से 16-बिट्स का उपयोग करने के लिए सेट है"। "केवल" कहने का मतलब यह होगा कि यह एक ही समय में 16 और 32 बिट्स दोनों को प्रबंधित करने में सक्षम नहीं है लेकिन वास्तव में यह है। – Yahel

+0

ठीक है, आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे लगता है कि मैं इसे समझता हूं। 'GetWindow()। SetFormat (PixelFormat.RGBA_8888)' विधि का उपयोग करने वाले सभी के लिए – Dan

संबंधित मुद्दे