开篇镇山之作,怎么镇山呢,算了,不会,那就来一点简单而又复杂的,那就是onDraw
函数,至于怎么简单,那是我解说简单,也就只简单了解。至于复制,onDraw顾名思义就是在画布上画上你想要的东西
onDraw在view和viewgroup中的调用方式是不一样的,在Viewgroup中如果你没有设置背景,就不会调用onDraw方法,在view中都会调用该方法
onDraw的基本用法
下面是画一个简单的圆
效果图:
在手机屏幕上面画东西跟你在真正的纸上画东西有点相似,画画肯定需要纸,然后需要笔,然后在手机屏幕上也有纸和笔
纸既是:Draw
笔既是:Paint
下面是Paint的一些属性
paint.setAntiAlias(true);//抗锯齿功能
paint.setColor(Color.RED); //设置画笔颜色
paint.setStyle(Style.FILL);//设置填充样式
paint.setStrokeWidth(30);//设置画笔宽度
paint.setShadowLayer(10, 15, 15,Color.GREEN);//设置阴影
void setStyle (Paint.Style style) 设置填充样式
Paint.Style.FILL :填充内部
Paint.Style.FILL_AND_STROKE :填充内部和描边
Paint.Style.STROKE :仅描边
setShadowLayer (float radius, float dx,float dy, int color) 添加阴影
参数:
radius:阴影的倾斜度
dx:水平位移
dy:垂直位移
java代码:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//设置画笔基本属性
Paint paint = new Paint();
//抗锯齿功能
paint.setAntiAlias(true);
//设置画笔颜色
paint.setColor(Color.RED);
//设置填充样式 Style.FILL/Style.FILL_AND_STROKE/Style.STROKE
paint.setStyle(Paint.Style.FILL);
//设置画笔宽度
paint.setStrokeWidth(5);
//设置阴影
paint.setShadowLayer(10, 15, 15, Color.GREEN);
//设置画布背景颜色
canvas.drawRGB(255, 255, 255);
//画圆
canvas.drawCircle(190, 200, 150, paint);
}