携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第8天,点击查看活动详情 >> 希望大家可以帮忙点个赞,谢谢!
卷首
安卓开发中经常会遇到一些需求,它要求的视图用安卓原生控件表达不出来,这时候需要我们自定义一些view,这时候就是头疼的时候,其实很多情况都是UI采用了苹果的设计图,结果安卓端的控件不一样,因此需要重新设计来展现与IOS端相同的布局样式。
Paint
我们在自定义view的时候常常需要自己去绘制一些与众不同的图形,而我们常用paint去绘制,paint是画笔,可以设置绘制风格,如:线宽(粗细)、颜色、透明度、填充风格等, 创建方法如下:
Paint paint = new Paint( );
mPaint.setStyle(Paint.Style.FILL); //设置画笔模式为填充
而canvas则指画布,表现在屏幕上就是一块区域,可以在上面使用各种API绘制想要的东西。
绘制标志
- STROKE //描边
- FILL //填充
- FILL_AND_STROKE //描边加填充
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setStrokeWidth(40); //为了实验效果明显,特地设置描边宽度非常大
// 描边
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(200,200,200,paint);
// 填充
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(200,300,200,paint);
// 描边加填充
paint.setStyle(Paint.Style.FILL_AND_STROKE);
canvas.drawCircle(200, 300, 200, paint);
drawxxx()方法:以一定的坐标值在当前画图区域画图,并且图层会叠加, 即后面绘画的图层会覆盖前面绘画的图层,如:
drawRect(RectF rect, Paint paint) :绘制矩形,
drawPath(Path path, Paint paint) :绘制一个路径,paint ; Path路径对象,
drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint) : 贴图(bitmap:Bitmap对象,src:源区域(这里是bitmap), dst:目标区域(应该在canvas的位置和大小),paint:Paint对象,画笔)。
canvas.drawCircle(startX, startY, 100f, paint)// 画圆
canvas.drawRect(startX, startY, startX + 100, startY + 100, paint)//画矩形
canvas.drawArc(rectF, 30f, 180f, true, paint)//画弧形
其他属性
setStrokeWidth(float width) 设置画笔宽度
setAntiAlias(boolean aa) //抗锯齿
总结
因为平时需求会要求使用自定义view,所以把一些常用的属性方法给记录摘录下来,以后加以补充,方便后续的学习进步,canvas是很重要的绘制工具,只有用好它才能更好的去绘制想要的样式,最近甚至还有一些简单的动画也使用了它,所以现在将它理一遍,这样就不会记乱了。