绘图

绘图onDraw

绘图,简单来说就是利用onDraw方法绘制一些图案。而继续细分,则分为以下几个部分
在这里插入图片描述

1、画笔画布的作用

画笔:paint类,主要用于指定颜色,透明度,笔的粗细,填充样式。
画布:canvas类,在画布上绘制图案,可以改变画布的尺寸和颜色等等。

举例:绘制简单的矩形:

public class MyView extends View {

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        Paint paint = new Paint();      //创建一个画笔对象
        paint.setColor(0xFFFF6600);     //设置画笔的颜色
        paint.setStyle(Paint.Style.FILL);       //设置填充方案
        canvas.drawRect(10,10, 280, 150, paint);
    }
}

这里有一点值得注意:系统默认颜色是透明的,所以要在setColor里加FF,来使其不透明,否则看不到图案
在MainActivity中添加自定义View

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        FrameLayout flo = findViewById(R.id.frameLayout);
        flo.addView(new MyView(this));
    }

结果:
在这里插入图片描述

2、绘制几何图形

在这里插入图片描述
举例:实现Android机器人的绘制:

 @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        /********绘制机器人************/
        Paint paint = new Paint();
        paint.setAntiAlias(true);     //采用抗锯齿
        paint.setColor(0xFFA4C739);   //设置颜色为绿色、

        //绘制头
        RectF rectF = new RectF(10, 10, 100, 100);      //定义外轮廓矩形
        rectF.offset(90, 20);
        canvas.drawArc(rectF, -10, -160, false, paint);     //绘制弧

        //绘制眼睛
        paint.setColor(0xFFFFFFFF);
        canvas.drawCircle(165, 53, 4, paint);       //绘制圆
        canvas.drawCircle(125, 53, 4, paint);       //绘制圆
        //绘制天线
        paint.setColor(0xFFA4C739);
        paint.setStrokeWidth(2);        //设置笔触宽度
        canvas.drawLine(110, 15, 125, 35, paint);       //绘制线
        canvas.drawLine(180, 15, 165, 35, paint);       //绘制线

        //绘制身体
        canvas.drawRect(100, 75, 190, 150, paint);          //绘制矩形
        RectF rectF_body = new RectF(100, 140, 190, 160);
        canvas.drawRoundRect(rectF_body, 10, 10, paint);                    //绘制圆角矩形

        //绘制胳膊
        RectF rectF_arm = new RectF(75,75,95,140);
        canvas.drawRoundRect(rectF_arm, 10, 10, paint);                       //绘制圆角矩形
        rectF_arm.offset(120, 0);
        canvas.drawRoundRect(rectF_arm, 10, 10, paint);

        //绘制腿
        RectF rectF_leg = new RectF(115, 150, 135, 200);
        canvas.drawRoundRect(rectF_leg, 10, 10, paint);
        rectF_leg.offset(40, 0);
        canvas.drawRoundRect(rectF_leg, 10, 10, paint);

    }

里面包含了椭圆,圆,矩形,圆角矩形,线的绘制。

结果:在这里插入图片描述

3、绘制文本

在布局中显示文本信息
在这里插入图片描述
结果:
在这里插入图片描述

4、绘制图片

5、绘制路径

在这里插入图片描述
结果:在这里插入图片描述
还有另一种显示路径的方法,用文字环绕:
在这里插入图片描述
结果:在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值