2012-06-09 8 views
6

पर संसाधनों से बिटमैप्स ड्रा करें मुझे दो बिटमैप्स, पृष्ठभूमि और अग्रभूमि मिल गया है। मैं कैनवास का उपयोग किए बिना पृष्ठभूमि पर बिटमैप अग्रभूमि कैसे आकर्षित करूं?अन्य

समाधान:

1) सबसे पहले अतिरिक्त विकल्प के साथ संसाधनों से बिटमैप्स बनाने ARGB_8888

BitmapFactory.Options options = new BitmapFactory.Options(); 
options.inPreferredConfig = Bitmap.Config.ARGB_8888; 

2) OnDraw अंदर बिटमैप्स

Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.background, options); 
Bitmap foreground = BitmapFactory.decodeResource(getResources(), R.drawable.foreground, options); 

3)() समारोह ड्रा ग्राफिक्स घोषित

protected void onDraw(Canvas canvas)  
{ 
    canvas.drawColor(Color.White); 

    Paint paint = new Paint(); 
    canvas.drawBitmap(background, 0, 0, paint); 
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER)); 
    canvas.drawBitmap(foreground, 0, 0, paint); 
} 
,210

और जैसा कि Soxxeh ने कहा, इस जानकारी के बहुत अच्छा स्रोत है: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html

+1

तो क्या यह समाधान काम करता है, या आप एक प्रश्न पूछ रहे थे? –

उत्तर

5

इस प्रयास करें:

canvas.drawBitmap(backgroundImageBitmap, 0.0f, 0.0f, null); 
canvas.drawBitmap(foregroundImageBitmap, 0.0f, 0.0f, null); 

दूसरी छवि (अग्रभूमि छवि) अल्फा पहलुओं होना आवश्यक है या आप इसे माध्यम से नहीं देख सकते ।

+0

एंड्रॉइड में कैसे सेट करें फोरग्राउंड बिटमैप के इन अल्फा पहलुओं? – Kris

+1

जब आप बिटमैप बनाते हैं, तो इसे एक RGBA_8888 पैरामीटर दें, फिर इसे सामान्य के रूप में खींचें (पृष्ठभूमि रंग सेट न करें)। [बिटमैप.कॉन्फिग] देखें (http://developer.android.com/reference/android/graphics/Bitmap.Config.html)। [यह उदाहरण] (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Xfermodes.html) आपको कुछ विचार भी दे सकता है। – Eric

+0

धन्यवाद! अंत में यह काम करता है! – Kris

1

यदि आप छवि दृश्य का उपयोग करते हैं तो आप पृष्ठभूमि के रूप में पहला बिटमैप सेट कर सकते हैं और दूसरी छवि स्रोत के रूप में सेट कर सकते हैं।

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/background" 
    android:src="@drawable/foreground"/> 
+0

यदि कोई छवि दृश्य का उपयोग नहीं कर रहा है तो क्या होगा? –

+0

- फ्रेमलेआउट पर आप setForeground() के माध्यम से एक अग्रभूमि निर्दिष्ट कर सकते हैं। - आप एक दूसरे के शीर्ष पर एकाधिक drawables लगाने के लिए LayerDrawable का भी उपयोग कर सकते हैं। - अन्यथा एरिक के दृष्टिकोण के साथ जाएं। – jakk