微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android.graphics.Xfermode的实例源码

项目:andcouchbaseentity    文件RoundImageView.java   
@Override
protected void onDraw(Canvas canvas) {
    Drawable drawable = getDrawable();
    if (drawable instanceof BitmapDrawable) {
        RectF rectF = new RectF(drawable.getBounds());
        int restoreCount = canvas.saveLayer(rectF,null,Canvas.ALL_SAVE_FLAG);
        getimageMatrix().mapRect(rectF);

        Paint paint = ((BitmapDrawable) drawable).getPaint();
        paint.setAntiAlias(true);
        paint.setColor(0xff000000);

        canvas.drawARGB(0,0);
        canvas.drawRoundRect(rectF,RADIUS,paint);

        Xfermode restoreMode = paint.getXfermode();
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        super.onDraw(canvas);

        // Restore paint and canvas
        paint.setXfermode(restoreMode);
        canvas.restoretoCount(restoreCount);
    } else {
        super.onDraw(canvas);
    }
}
项目:android-ui-demos    文件XferModeTestView.java   
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //创建一个图层,在图层上演示图形混合后的效果
    int sc = canvas.saveLayer(null,mPaint,ALL_SAVE_FLAG);

    canvas.translate(mWidth / 2,mHeight / 2);

    int radius = Math.min(mWidth,mHeight) / 6;
    mPaint.setColor(0xFFFEC336);
    canvas.drawCircle(0,radius,mPaint);

    Xfermode oldMode = mPaint.getXfermode();
    if (mXfermode != null) {
        mPaint.setXfermode(mXfermode);
    }

    int size = Math.min(mWidth,mHeight) / 4;
    mPaint.setColor(0xFF5596FF);
    canvas.drawRect(0,size,mPaint);

    mPaint.setXfermode(oldMode);

    canvas.restoretoCount(sc);
}
项目:KTA-Editor    文件GraphicsUtil.java   
public Bitmap getCircleBitmap(Bitmap bitmap,int n) {
       Bitmap bitmap2 = Bitmap.createBitmap((int)bitmap.getWidth(),(int)bitmap.getHeight(),(Bitmap.Config)Bitmap.Config.ARGB_8888);
       Canvas canvas = new Canvas(bitmap2);
       Paint paint = new Paint();
       Rect rect = new Rect(0,bitmap.getWidth(),bitmap.getHeight());
       RectF rectF = new RectF(rect);
       paint.setAntiAlias(true);
       paint.setDither(true);
       paint.setFilterBitmap(true);
       canvas.drawARGB(0,0);
       paint.setColor(-65536);
       canvas.drawoval(rectF,paint);
       paint.setColor(-16776961);
       paint.setStyle(Paint.Style.stroke);
       paint.setstrokeWidth(4.0f);
       paint.setXfermode((Xfermode)new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
       canvas.drawBitmap(bitmap,rect,paint);
       return bitmap2;
}
项目:Gizwits-WaterHeater_Android    文件CircularSeekBar.java   
/**
 * 画进度内环
 * 
 * @param int template 温度
 * */
private void drawProgressCircle(Canvas canvas) {
    int sc = canvas.saveLayer(0,width,height,Canvas.MATRIX_SAVE_FLAG | Canvas.CLIP_SAVE_FLAG
                    | Canvas.HAS_ALPHA_LAYER_SAVE_FLAG
                    | Canvas.FULL_COLOR_LAYER_SAVE_FLAG
                    | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
    canvas.drawBitmap(CircleBg3,RectfCircle,circlPaint);

    Xfermode xfermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);
    Paint circlePaint2 = new Paint();
    circlePaint2.setAntiAlias(true);
    circlePaint2.setXfermode(xfermode);

    canvas.drawArc(RectfCircle,startAngle + angle,360 - angle,true,circlePaint2);
    circlePaint2.setXfermode(null);
    canvas.restoretoCount(sc);
}
项目:videoMerge    文件BitmapManager.java   
private Bitmap MaskBitmap(Bitmap bitmap,Bitmap mask,int size,Xfermode mode) {
    if (null == bitmap || mask == null) {
        return null;
    }
    //定义期望大小的bitmap
    Bitmap dstBmp = Bitmap.createBitmap(size,Config.ARGB_8888);
    //定义一个画布
    Canvas canvas = new Canvas(dstBmp);
    //创建一个取消锯齿画笔
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    //定义需要绘制的某图片上的那一部分矩形空间
    Rect src = new Rect(0,mask.getWidth(),mask.getHeight());
    //定义需要将上面的矩形绘制成新的矩形大小
    Rect dst = new Rect(0,size);
    //将蒙版图片绘制成imageview本身的大小,这样从大小才会和UE标注的一样大
    canvas.drawBitmap(mask,src,dst,paint);
    //设置两张图片的相交模式
    //至于这个函数介绍参考网址:http://blog.csdn.net/wm111/article/details/7299294
    paint.setXfermode(mode);
    //将src修改为需要添加mask的bitmap大小,因为是要将此bitmap整个添加蒙版
    src.right = bitmap.getWidth();
    src.bottom = bitmap.getHeight();
    //在已经绘制的mask上叠加bitmap
    canvas.drawBitmap(bitmap,paint);
    return dstBmp;
}
项目:videoMerge    文件FrameView.java   
private Bitmap MaskBitmap(Bitmap bitmap,Xfermode mode) {
    if (null == bitmap || mask == null) {
        return null;
    }
    Bitmap dstBmp = Bitmap.createBitmap(size,Config.ARGB_8888);
    Canvas canvas = new Canvas(dstBmp);
    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    Rect src = new Rect(0,mask.getHeight());
    Rect dst = new Rect(0,size);
    canvas.drawBitmap(mask,paint);
    paint.setXfermode(mode);
    src.right = bitmap.getWidth();
    src.bottom = bitmap.getHeight();
    canvas.drawBitmap(bitmap,paint);
    return dstBmp;
}
项目:Tribe    文件HoverImageView.java   
@Override
protected void onDraw(Canvas canvas) {

    Drawable maiDrawable = getDrawable();
    if (!isInEditMode() && maiDrawable instanceof BitmapDrawable) {
        Paint paint = ((BitmapDrawable) maiDrawable).getPaint();

        Rect bitmapBounds = maiDrawable.getBounds();
        rect.set(bitmapBounds);

        int saveCount = canvas.saveLayer(rect,Canvas.MATRIX_SAVE_FLAG |
                   Canvas.CLIP_SAVE_FLAG |
                   Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
                   Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
                   Canvas.CLIP_TO_LAYER_SAVE_FLAG);
        getimageMatrix().mapRect(rect);

        paint.setAntiAlias(true);
        canvas.drawARGB(0,0);
        final int color = 0xffffffff;
        paint.setColor(color);
        canvas.drawPath(boundpath,paint);

        Xfermode oldMode = paint.getXfermode();
        paint.setXfermode(duffMode);
        super.onDraw(canvas);
        paint.setXfermode(oldMode);
        canvas.restoretoCount(saveCount);

        drawHover(canvas);
        drawBorder(canvas);
    } else {
        super.onDraw(canvas);
    }
}
项目:SelectName    文件MaskedImage.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,0.0F,f1,f2,31);
        int j = getWidth();
        int k = getHeight();
        localDrawable.setBounds(0,j,k);
        localDrawable.draw(paramCanvas);
        if ((this.mask == null) || (this.mask.isRecycled())) {
            Bitmap localBitmap1 = createMask();
            this.mask = localBitmap1;
        }
        Bitmap localBitmap2 = this.mask;
        Paint localPaint3;
        localPaint3 = this.paint;
        paramCanvas.drawBitmap(localBitmap2,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder==" + localStringBuilder);
    }
}
项目:starcor.xul    文件XulgiFDecoder.java   
public void draw(XulDC dc,int x1,int y1,int w1,int h1,float x2,float y2,float w2,float h2,Paint p) {
    dc.save();
    Xfermode xfermode = p.setXfermode(_colorKeyXferMode);
    if (_xulDrawable == null) {
        _xulDrawable = XulDrawable.fromBitmap(_frameImage,"","");
    }
    dc.drawBitmap(_xulDrawable,x1,y1,w1,h1,x2,y2,w2,h2,p);
    p.setXfermode(xfermode);
    dc.restore();
}
项目:starcor.xul    文件XulgiFDecoder.java   
public void draw(Canvas canvas,Paint p) {
    if (!_isCurrentFrameDecoded) {
        decodeFrame();
    }
    canvas.save();
    Xfermode xfermode = p.setXfermode(_colorKeyXferMode);
    XulDC.drawBitmap(canvas,_frameImage,p);
    p.setXfermode(xfermode);
    canvas.restore();
}
项目:tinkerDemo    文件MaskedImage.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder==" + localStringBuilder);
    }
}
项目:monolog-android    文件MaskedImageView.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,k);
        localDrawable.draw(paramCanvas);
        if ((this.mask == null) || (this.mask.isRecycled())) {
            Bitmap localBitmap1 = createMask();
            this.mask = localBitmap1;
        }
        Bitmap localBitmap2 = this.mask;
        Paint localPaint3 = this.paint;
        paramCanvas.drawBitmap(localBitmap2,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder=="+localStringBuilder);
    }
}
项目:BlurKit-Android    文件RoundedImageView.java   
@Override
protected void onDraw(Canvas canvas) {
    Drawable myDrawable = getDrawable();
    if (myDrawable!=null && myDrawable instanceof BitmapDrawable && mCornerRadius > 0) {
        Paint paint = ((BitmapDrawable) myDrawable).getPaint();
        final int color = 0xff000000;
        Rect bitmapBounds = myDrawable.getBounds();
        final RectF rectF = new RectF(bitmapBounds);
        int saveCount = canvas.saveLayer(rectF,Canvas.MATRIX_SAVE_FLAG |
                        Canvas.CLIP_SAVE_FLAG |
                        Canvas.HAS_ALPHA_LAYER_SAVE_FLAG |
                        Canvas.FULL_COLOR_LAYER_SAVE_FLAG |
                        Canvas.CLIP_TO_LAYER_SAVE_FLAG);
        getimageMatrix().mapRect(rectF);

        paint.setAntiAlias(true);
        canvas.drawARGB(0,0);
        paint.setColor(color);
        canvas.drawRoundRect(rectF,mCornerRadius,paint);

        Xfermode oldMode = paint.getXfermode();
        paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
        super.onDraw(canvas);
        paint.setXfermode(oldMode);
        canvas.restoretoCount(saveCount);
    } else {
        super.onDraw(canvas);
    }
}
项目:Gestures-Lock    文件NLockView.java   
private void clearCanvas(Canvas canvas,Point p) {
    // 将点下面的线清除(前提是父容器必须有设置背景)
    Xfermode xfermode = mPaint.getXfermode();
    int color = mPaint.getColor();
    mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    mPaint.setColor(Color.TRANSPARENT);
    canvas.drawCircle(p.x,p.y,mRadius,mPaint);
    mPaint.setXfermode(xfermode);
    mPaint.setColor(color);
}
项目:common-layout-android    文件MaskedImageView.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,Canvas.ALL_SAVE_FLAG);
        int j = getWidth();
        int k = getHeight();
        localDrawable.setBounds(0,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder=="+localStringBuilder);
    }
}
项目:FriendCircleDemo    文件MaskedImage.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder=="+localStringBuilder);
    }
}
项目:AyoSunny    文件MaskedImage.java   
protected void onDraw(Canvas paramCanvas)
{
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try
    {
        if (this.paint == null)
        {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,k);
        localDrawable.draw(paramCanvas);
        if ((this.mask == null) || (this.mask.isRecycled()))
        {
            Bitmap localBitmap1 = createMask();
            this.mask = localBitmap1;
        }
        Bitmap localBitmap2 = this.mask;
        Paint localPaint3 = this.paint;
        paramCanvas.drawBitmap(localBitmap2,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException)
    {
        StringBuilder localStringBuilder = new StringBuilder().append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder==" + localStringBuilder);
    }
}
项目:Pioneer    文件Spans.java   
@Override
public void draw(@NonNull Rect outRect,@NonNull Canvas canvas,CharSequence text,@IntRange(from = 0) int start,@IntRange(from = 0) int end,float x,int top,int y,int bottom,@NonNull Paint paint) {
    if (bitmap == null) {
        bitmap = Bitmap.createBitmap(frame.right - frame.left,frame.bottom - frame.top,Bitmap.Config.ARGB_8888);
        bitmapCanvas = new Canvas(bitmap);
    }
    bitmapCanvas.drawColor(Color.BLACK,PorterDuff.Mode.CLEAR);
    bitmapCanvas.translate(-x,0);
    super.draw(outRect,bitmapCanvas,text,start,end,x,top,y,bottom,paint);
    Xfermode oldXfermode = paint.getXfermode();
    paint.setXfermode(this.xfermode);
    srcGroup.draw(outRect,paint);
    paint.setXfermode(oldXfermode);
    canvas.drawBitmap(bitmap,null);
}
项目:Noyze    文件ColorHelper.java   
@SuppressWarnings("unused")
public static void setXfermode(ImageView icon,Xfermode mode) {
    try {
        // Try to load/ cache the xfermode method.
        if (null == xfremode) {
            xfremode = ImageView.class.getDeclaredMethod("setXfermode",Xfermode.class);
            if (null != xfremode) xfremode.setAccessible(true);
        }

        if (null != xfremode) xfremode.invoke(icon,mode);
    } catch (Throwable t) {
        LogUtils.LOGE("ColorHelper","Error with ImageView#setXfermode",t);
    }
}
项目:ALLGO    文件MaskedImage.java   
protected void onDraw(Canvas paramCanvas) {
    Drawable localDrawable = getDrawable();
    if (localDrawable == null)
        return;
    try {
        if (this.paint == null) {
            Paint localPaint1 = new Paint();
            this.paint = localPaint1;
            this.paint.setFilterBitmap(false);
            Paint localPaint2 = this.paint;
            Xfermode localXfermode1 = MASK_XFERMODE;
            @SuppressWarnings("unused")
            Xfermode localXfermode2 = localPaint2.setXfermode(localXfermode1);
        }
        float f1 = getWidth();
        float f2 = getHeight();
        int i = paramCanvas.saveLayer(0.0F,localPaint3);
        paramCanvas.restoretoCount(i);
        return;
    } catch (Exception localException) {
        StringBuilder localStringBuilder = new StringBuilder()
                .append("Attempting to draw with recycled bitmap. View ID = ");
        System.out.println("localStringBuilder=="+localStringBuilder);
    }
}
项目:pixate-freestyle-android    文件PXPaintGroup.java   
@Override
public void setBleningMode(Xfermode mode) {
    super.setBleningMode(mode);
    if (paints != null) {
        for (PXPaint p : paints) {
            p.setBleningMode(mode);
        }
    }
}
项目:RoundedImageView    文件RoundedImageView.java   
@SuppressLint("NewApi")
private void init(AttributeSet attrs) {
    if (Build.VERSION.SDK_INT >= 11) {
        setLayerType( LAYER_TYPE_SOFTWARE,null );
    }
    borderColor = DEFAULT_BORDER_COLOR;
    if(attrs != null){
        TypedArray array = context.obtainStyledAttributes(attrs,R.styleable._RoundedImageView);
        if(array != null){
            borderColor = array.getColor(R.styleable._RoundedImageView_borderColor,DEFAULT_BORDER_COLOR);
            borderWidth = array.getDimensionPixelSize(R.styleable._RoundedImageView_borderWidth,-1);
            roundWidth = array.getDimensionPixelSize(R.styleable._RoundedImageView_roundWidth,-1);
            array.recycle();
        }
    }
    displayMetrics displayMetrics = new displayMetrics();
    WindowManager windowManager = (WindowManager) getContext().getSystemService( Context.WINDOW_SERVICE );
    windowManager.getDefaultdisplay().getMetrics( displayMetrics );

    paint = new Paint();
    paint.setStyle( Style.stroke );
    paint.setColor( borderColor );
    paint.setAntiAlias( true );
    paint.setstrokeWidth( borderWidth );
    Xfermode xfermode = new PorterDuffXfermode( PorterDuff.Mode.SRC );
    paint.setXfermode( xfermode );

    drawRect = new RectF();
    drawPath = new Path();
}
项目:Anki-Android    文件GraphicsWrap.java   
public void drawImage(BufferedImageWrap image,String tmp,float y){
    //System.err.println("drawImage: " + image.getBitmap().getWidth() + " : "+ image.getBitmap().getHeight());
    Xfermode mode  = paint.getXfermode();
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OVER));
    //canvas.drawBitmap(image.getBitmap(),paint);
    Bitmap bitmap = image.getBitmap();
    bitmap.preparetoDraw();
    canvas.drawBitmap(bitmap,canvas.getClipBounds(),paint);
    paint.setXfermode(mode);
}
项目:android-ui-demos    文件XferModeTestView.java   
public void setXferMode(Xfermode xferMode) {
    mXfermode = xferMode;
    invalidate();
}
项目:playn    文件AndroidCanvasstate.java   
private Xfermode convertComposite(Canvas.Composite composite) {
  return xfermodes[composite.ordinal()];
}
项目:forplay    文件AndroidSurfaceState.java   
private Xfermode convertComposite(Canvas.Composite composite) {
  return xfermodes[composite.ordinal()];
}
项目:pixate-freestyle-android    文件BasePXPaint.java   
public void setBleningMode(Xfermode mode) {
    blendingMode = mode;
}
项目:pixate-freestyle-android    文件BasePXPaint.java   
public Xfermode getBleningMode() {
    return blendingMode;
}
项目:Android-Jigsaw-Puzzle    文件DrawingView.java   
/**
 * Set erase to true when the erase button is clicked.
 *
 * @param isErase {@code true} if erase is clicked {@code false} otherwise
 */
public void seterase(boolean isErase) {
    Xfermode xfermode = isErase ? new PorterDuffXfermode(
            PorterDuff.Mode.CLEAR) : null;
    drawPaint.setXfermode(xfermode);
}
项目:pixate-freestyle-android    文件PXPaint.java   
/**
 * Sets the blend mode to use when applying this fill
 */
void setBleningMode(Xfermode mode);
项目:pixate-freestyle-android    文件PXPaint.java   
/**
 * Returns the blend mode to use when applying this fill.
 * 
 * @return {@link Xfermode} May be <code>null</code>
 */
Xfermode getBleningMode();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。