Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.batman);
https://github.com/wanglianghai/PracticeDraw1
https://juejin.im/post/5962a3746fb9a06ba2687226
提示:写代码时有地方一行不行看一整个地方,有时候会忘记写的,方法名准确。bebug一步一步往下看
onDraw会循环调用造成变量的进入onDraw初始值不一样.(所以我多个Paint)
计算文字宽高
Rect mRectString = new Rect()
mPaint.getTextBounts(mString, 0, mStrings.length(), mRect)
int width = mRectString.width();
1.View是黄色的背景drawBitmap()
canvas.drawerColor(Color.YELLOW);
2.空心圆去锯齿.anti:抗 alias:锯齿状,画笔的样式
//画笔
mPaint2.setStyle(Paint.Style.STROKE);
//画笔宽
mPaint2.setStrokeWidth(2);
//画抗锯齿状
mPaint2.setAntiAlias(true);
//画圆
canvas.drawCircle(450, 100, 100, mPaint2)
3.一个圆点,画笔的笔尖
//画笔
mPaint1.setStyle(Paint.Style.STROKE);
//笔尖的形状
mPaint1.setStrokeCap(Paint.Cap.ROUND);
//笔尖的粗细
mPaint1.setStrokeWidth(50);
canvas.drawPoint(200, 200, mPaint1);
4.画圆角矩形
canvas.drawRoundRect(200, 300, 500, 400, 50, 50, mPaint);
5.椭圆
private RectF rectF = new RectF(100, 50, 700, 450);
canvas.drawArc(rectF, -100, 100, true, mPaint1);//绘制扇形
canvas.drawArc(rectF, 20, 140, false, mPaint1); // 绘制弧形
6.爱心
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void lovePath() {
//移动开始点
mPath.moveTo(400, 300);
//终点
mPath.lineTo(305, 170);
//弧
mPath.arcTo(300, 100, 400, 200, -199, 199, false);// 有痕迹
mPath.arcTo(400, 100, 500, 200, -180, 199, false);
mPath.lineTo(495, 170);
//最后密封
mPath.close();