2012-03-21 11 views
13

पर रंग बैंडिंग केवल एंड्रॉइड 4.0 या 4.0.3 चलाने वाले अनुकरणकर्ताओं पर, मुझे भयानक रंग बैंडिंग दिखाई दे रही है जिसे मैं छुटकारा पाने के लिए प्रतीत नहीं कर सकता। मैंने परीक्षण किए गए हर दूसरे एंड्रॉइड संस्करण पर, ग्रेडियेंट चिकनी दिखते हैं।एंड्रॉइड 4.0+

मेरे पास एक SurfaceView है जिसे RGBX_8888 के रूप में कॉन्फ़िगर किया गया है, और बैंडिंग रेंडर कैनवास में मौजूद नहीं है। यदि मैं प्रतिपादन के अंत में शोर पैटर्न को ओवरले करके मैन्युअल रूप से छवि को डुबोकर रखता हूं तो मैं ग्रेडियेंट को फिर से चिकनी बना सकता हूं, हालांकि स्पष्ट रूप से प्रदर्शन की लागत पर जो मैं बचाना चाहता हूं।

तो बैंडिंग बाद में पेश की जा रही है। मैं केवल यह मान सकता हूं कि, 4.0+ पर, मेरी सतह दृश्य को कम बिंदु-गहराई तक कम किया जा रहा है, इसे किसी बिंदु पर खींचा जा रहा है और प्रदर्शित किया जा रहा है, और मैं स्क्रीन कैप्चर से देख सकता हूं कि ग्रेडियेंट एक समय में 8 मानों को बढ़ा रहे हैं प्रत्येक चैनल, 555 (565 नहीं) को मापने का सुझाव देता है।

मैंने अपनी गतिविधि ऑनक्रेट फ़ंक्शन पर निम्नलिखित जोड़ा, लेकिन इससे कोई फर्क नहीं पड़ता।

getWindow().setFormat(PixelFormat.RGBA_8888); 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 

मैंने उपरोक्त को अटैचमेंट टॉविंडो() पर डालने का भी प्रयास किया, लेकिन अभी भी कोई बदलाव नहीं हुआ।

(मुझे विश्वास है कि RGBA_8888 डिफ़ॉल्ट विंडो प्रारूप 2.2 और इसके बाद के संस्करण के लिए वैसे भी है, इसलिए यह थोड़ा आश्चर्य है कि स्पष्ट रूप से उस प्रारूप की स्थापना 4.0+ पर कोई प्रभाव नहीं है।)

कौन सा सवाल छोड़ देता है, यदि स्रोत है 8888 और गंतव्य 8888 है, मात्रा/बैंडिंग का परिचय क्या है और यह केवल 4.0+ पर क्यों दिखाई देता है?

बहुत परेशान। मुझे आश्चर्य है कि कोई भी कुछ प्रकाश डाल सकता है?

+1

संभावित डुप्लिकेट [आईसीएस पर बिटमैप्स गलत पिक्सेल प्रारूप के साथ लोड किए गए हैं] (http://stackoverflow.com/questions/9097887/bitmaps-on-ics-are-loaded-with-wrong-pixel-format) –

+0

धन्यवाद उस लिंक के लिए ... वास्तव में एक ही समस्या की तरह दिखता है। कुछ उत्तरों से पता चलता है कि यह केवल एक एमुलेटर समस्या हो सकती है और, हालांकि कोई निश्चित उत्तर नहीं है, मैं इसके साथ अभी जा रहा हूं। – threeshinyapples

+0

मुझे एक ही समस्या है। मैं v2.2 + और v2.3 + पर समस्या को हटाने में सक्षम था, लेकिन v4.0 + नहीं, मुझे यह जानना अच्छा लगेगा कि कोई इसका समाधान जानता है या नहीं? – Sent1nel

उत्तर

2

एमुलेटर "उपयोग होस्ट GPU" चालू किया जा रहा जिले का प्रयास करें ..

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888; 
Bitmap gradient = BitmapFactory.decodeResource(getResources(), R.drawable.gradient, options); 

findViewById(R.id.main).setBackgroundDrawable(new BitmapDrawable(gradient)); 
0

विकल्प मेरे लिए रंग समस्याओं तय, क्रेडिट इस जवाब https://stackoverflow.com/a/17166234/1287459

को जाता है मेरे मामले में मैं Android 4.2 उपयोग कर रहा था .2।

+0

एक चेतावनी: "होस्ट जीपीयू" (वे काले रंग से बाहर आते हैं) का उपयोग करते समय स्क्रीनशॉट काम नहीं करते हैं –

+0

मेरे मामले में काम किया ... मैं ऐसा कर रहा था इसलिए मुझे Google Play के लिए कुछ अच्छे स्क्रीनशॉट मिल सकते थे। – Georgie

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