View框架Paint和Canvas(Android)

paint类是画笔类,用于描述图形的颜色和风格,比如颜色、大小等;canvas是画布类,用于绘制各种图形,比如文本Text、几何图形等。Paint类是辅助类,一半作为Canvas类的参数。
通过一个例子演示Canvas绘图用法:

  1. 创建一个新项目
  2. 新建一个View的子类,再改类中重写onDraw(Canvas canvas)方法,该方法是在刷新视图时自动回调的方法,在onDraw()方法中使用canvas对象绘制图形,在其中会用到Paint类。
  3. 然后再Activity中添加该视图,即是在setContentView(”View子类的对象”)。
    在Canvas中有使用到Paint类,会创建Paint类的对象,直接new出来就行。

在这里插入图片描述
在创建的View子类中,重写了onDrown()和 onTouchEvent(MotionEvent event)方法,一个用于绘制图形,一个用于响应事件

public class CanvasView extends View {
    private Paint mPaint;//画笔类
    private float x,y;
    public CanvasView(Context context) {
        super(context);
        mPaint=new Paint();
        mPaint.setColor(Color.BLUE);
        mPaint.setTextSize(50);
        x=10;
        y=10;//初始化图形的坐标位置,以便于之后根据事务动态变化
    }

    //重写onDraw(),在onDraw中绘制图形
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawCircle(x,y,10,mPaint);//圆形的x、y坐标、半径、画笔类
        canvas.drawText("Android",100,100,mPaint);//文本图形,内容、xy坐标、画笔类
    }
//MotionEvent.ACTION_MOVE响应鼠标按住拖动和MotionEvent.ACTION_UP点击屏幕某处时
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction()==MotionEvent.ACTION_MOVE ||
                event.getAction()==MotionEvent.ACTION_UP){
            x=event.getX();
            y=event.getY();//得到触发事件的坐标,让图形更新坐标
        }
        invalidate();//刷新视图,重新回调onDraw()方法
      return true;
    }
}

在MainActivity中更改setContentView()

setContentView(new CanvasView(this));

在这里插入图片描述
可以使用random函数,在每次事件后,随机的改变图形颜色。需要注意的是在将随机数转换为int时,是对后面的整体进行转换,不要写成(int)Math.random()*255这样,因为Math.random()产生的是[0,1)的double数转换为int时都为0.

colorred=(int)(Math.random()*255);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值