自定义View----简介

本文深入探讨Android自定义View的创建过程,从构造器到事件响应,解析如何使用Paint对象设置样式,以及如何通过Canvas进行绘制。同时,文章介绍了view与viewgroup的关系,以及onMeasure、onLayout和onDraw这三个关键方法的作用。

View:

1.有4个构造器

1).在view构造器中初始化数据
paint = new Paint();//初始化数据
paint.setColor(Color.DKGRAY);//设置画笔颜色
paint.setAntiAlias(true);//抗锯齿(描边)
//paint.setStyle(Paint.Style.FILL);//绘制样式(实心圆)
paint.setStyle(Paint.Style.STROKE);//绘制样式(空心圆)
paint.setStrokeWidth(10);//空心圆的边框粗度

2).在onDraw中进行绘制
canvas.drawCircle(circleX,circleY,50,paint);//画笔
参数:
<1>.绘图距离X轴的距离(四象限)
<2>.绘图距离Y轴的距离(四象限)
<3>.绘图的半径
<4>.在构造器中初始化的画笔
3).事件响应
@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()){  //动作行为
        case MotionEvent.ACTION_DOWN://按下
            circleX = (int) event.getX(); //获取距离父控件的x轴坐标
//          circleX = (int) event.getRawX(); //获取距离屏幕边缘的x轴坐标
            circleY = (int) event.getY();//获取距离父控件的Y轴坐标
            invalidate();//重绘
            break;
        case MotionEvent.ACTION_MOVE://移动
            circleX = (int) event.getX();//获取距离父控件的x轴坐标
            circleY = (int) event.getY();//获取距离父控件的Y轴坐标
            invalidate();//重绘
            break;
        case MotionEvent.ACTION_UP://抬起
            break;
    }
    return true;//返回true,证明消费了这个事件(三个时间都运行了,包括按下,滑动,抬起),false的化,只走down事件
}

4).view重要方法
invalidate()   //重绘 直接触发onDraw()方法 (只能在主线程中通知重绘)
postInvalidate()   //重绘 直接触发onDraw()方法 (可以在子线程中通知重绘)
requsetLayuot()  //请求重新布局  出发onMeasure()和onLayout()

2.view和viewgroup关系

view 类时所有控件的基类(父类)
viewgroup是容器类控件(五大布局的父view)
view 是viewgroup的基类(父类)
view的父类的objct

3.三部曲

onMeasure()---测量
onLayout()---布局
onDraw()---绘制

4.在线程中进行绘制

控件.invalidate()   //重绘 直接触发onDraw()方法 (只能在主线程中通知重绘)
控件.postInvalidate()   //重绘 直接触发onDraw()方法 (可以在子线程中通知重绘)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值