Code example for Canvas

Methods: drawRect, restoreToCount, saveLayer, translate

0
 
        @Override 
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
 
            canvas.translate(140.0f, 100.0f);
 
            //canvas.drawRGB(255, 255, 255); 
 
            int count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint,
                    Canvas.ALL_SAVE_FLAG);
 
            mRectPaint.setColor(0xffff0000);
            canvas.drawRect(0.0f, 0.0f, 200.0f, 100.0f, mRectPaint);
 
            canvas.restoreToCount(count);
 
            canvas.translate(0.0f, 125.0f);
 
            count = canvas.saveLayer(0.0f, 0.0f, 200.0f, 100.0f, mLayerPaint,
                    Canvas.ALL_SAVE_FLAG);
 
            mRectPaint.setColor(0xff00ff00);
            mRectPaint.setAlpha(50);
            canvas.drawRect(0.0f, 0.0f, 200.0f, 100.0f, mRectPaint);
 
            canvas.restoreToCount(count);
 
            canvas.translate(25.0f, 125.0f);
 
            mRectPaint.setColor(0xff0000ff);
            mRectPaint.setAlpha(255);
            canvas.drawRect(0.0f, 0.0f, 100.0f, 50.0f, mRectPaint);
 
            mLayerPaint.setAlpha(127);
            mLayerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
            count = canvas.saveLayer(50.0f, 25.0f, 150.0f, 75.0f, mLayerPaint,
                    Canvas.ALL_SAVE_FLAG);
 
            mRectPaint.setColor(0xffff0000);
            canvas.drawRect(50.0f, 25.0f, 150.0f, 75.0f, mRectPaint);
 
            canvas.restoreToCount(count);
 
            canvas.translate(0.0f, 125.0f);
 
            mRectPaint.setColor(0xff0000ff);
            mRectPaint.setAlpha(255);
            canvas.drawRect(0.0f, 0.0f, 100.0f, 50.0f, mRectPaint);
 
            mLayerPaint.setColor(0xffff0000);
            mLayerPaint.setAlpha(127);
            mLayerPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP));
            count = canvas.saveLayer(50.0f, 25.0f, 150.0f, 75.0f, mLayerPaint,
                    Canvas.ALL_SAVE_FLAG);
 
            mRectPaint.setColor(0xffff0000);
            canvas.drawRect(50.0f, 25.0f, 150.0f, 75.0f, mRectPaint);
 
            canvas.restoreToCount(count);
 
            mLayerPaint = new Paint();
        } 
    } 
}