Saturday, April 20, 2013

[android-developers] Re: setXfermode not working on pre-ICS

I forgot:

Initialization of pTouch (used in onDraw()):

pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);         
pTouch.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); 
pTouch.setColor(Color.TRANSPARENT);
pTouch.setMaskFilter(new BlurMaskFilter(25, Blur.NORMAL));




Am Samstag, 20. April 2013 11:07:16 UTC+2 schrieb user123:
I have 2 images, one on top of the other. I paint a circle in the front-image with xfermode to let the image bellow show through.

I realized this with 2 views in a RelativeLayout. The front-view acts as "mask" and is a custom view. 

The problem: Works well in 4.x, but on 2.x the circle is black, instead of transparent.


The code:


@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);

c2.drawCircle(X, Y, 50, pTouch);
Paint new_paint = new Paint();
new_paint.setXfermode(new PorterDuffXfermode(Mode.SRC_ATOP));
rect.set (0, 0, getWidth(), getHeight());
canvas.drawBitmap(overlay, null, rect, new_paint);

}

And c2 was initialized to a canvas with bitmap "overlay", like this:

Bitmap overlay;
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
overlay = BitmapFactory.decodeResource(getResources(), R.drawable.overlay, options);
//...
overlay = Bitmap.createScaledBitmap(overlay, newWidth, newHeight, false);

c2 = new Canvas(overlay);

Paint filterPaint = new Paint();
filterPaint.setColorFilter(new PorterDuffColorFilter(0xff000022,  PorterDuff.Mode.SRC_ATOP));
rect.set (0, 0, w, h);
c2.drawBitmap(overlay, null, rect, filterPaint);


Thanks!

--
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
---
You received this message because you are subscribed to the Google Groups "Android Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to android-developers+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment