概述
android的canvas
结合matrix
,可以绘制很多效果,所有的绘制最底层都会到canvas
的绘制部分。
绘制场景
绘制圆角矩形
ShapeDrawable mRoundBg = new ShapeDrawable();
mRoundBg.getPaint().setAntiAlias(true);
mRoundBg.getPaint().setColor(Color.WHITE);
mRoundBg.setBounds(0, 0, viewWidth, viewHeight); //设置绘制边界
mRoundBg.setShape(new RoundRectShape(new float[]{12, 12, 12, 12, 0, 0, 0, 0}, null, null)); //设置圆角左上,右上
mRoundBg.draw(canvas);
绘制图
//绘制bitmap
Bitmap mShadow = BitmapFactory.decodeResource(getResources(), R.drawable.home_floor_smile_line);
//设置形变
RectF mShadowRect = new RectF();
mShadowRect.bottom = mShadow.getHeight();
mShadowRect.right = mShadow.getWidth();
Matrix mShadowMatrix = new Matrix();
//mShadowMatrix.reset();
mShadowMatrix.setRectToRect(mShadowRect, new RectF(marginLeft, marginTop, viewWidht, viewHeight), Matrix.ScaleToFit.FILL);
//绘制
canvas.drawBitmap(mShadow, mShadowMatrix, null);
//.9图的绘制
Bitmap smileBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.home_floor_smile_line);
NinePatch linePatch = new NinePatch(smileBitmap, smileBitmap.getNinePatchChunk(), null); //这里绘制.9图
RectF mShadowRect = new RectF(); //绘制区域
mShadowRect.set(0, 0, width, height);
linePatch.draw(canvas, mShadowRect);
绘制渐变色
颜色的绘制,是画笔控制的,
paint.setColor(Color.RED)
;
如果是渐变色的话,就要用到画笔的高级部分,paint.setShader(shader)
;例如LinearGradient
.
//通过设置背景绘制渐变色
GradientDrawable searchBarBg = new GradientDrawable(GradientDrawable.Orientation.TOP_BOTTOM, new int[]{Color.YELLOW, Color.RED});
view.setBackgroundDrawable(searchBarBg);
//当然也可以用canvas绘制
Paint mShadowPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
LinearGradient shader = new LinearGradient(0, 0, 0, height, new int[]{Color.YELLOW, Color.RED}, null, Shader.TileMode.CLAMP);// 线性渐变,Shader的子类
mShadowPaint.setShader(shader);
canvas.drawRect(left, top, right, bottom, paint);