自定义View

View类是Android中各种组件的基类,如View是ViewGroup基类,表现为显示在屏幕上的各种视图。Android中的UI组件都是由View和ViewGroup组成。

 

ttributeSet与自定义属性:系统自带的View可以在xml中配置属性,对于已经写好的自定义的View同样可以在xml中配置属性,为了使自定义View的属性可以在xml中配置,需要一下四个步骤:

 

  1. 通过<declare-styleable>为自定义View添加属性
  2. 在xml中为相应的属性生命属性值
  3. 在运行时获取属性值

二、自定义View

自定义View的最基本的方法是:

onMeasure():测量,决定View的大小;

onLayout():布局,决定View在ViewGroup中的位置

onDraw():绘制,决定绘制这个View;

 

在onMeasure方法中实现了自定义尺寸大小,在onDraw方法中实现了自定义的绘制View。接下来做一个自定义的圆形View。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Override
  protected void onDraw(Canvas canvas) {
      //调用父类的onDraw函数,因为View这个类实现了一些基本的绘制功能,比如绘制背景颜色和背景图片
      super.onDraw(canvas);
      //半径
      int r = getMeasuredWidth()/2;
      //以圆心的横坐标为当前View的左起始位置+半径
      int centerX = getLeft() + r;
      //以圆心的横坐标为当前View的顶部起始位置+半径
      int centerY = getTop() + r;
      Paint paint = new Paint();
      paint.setColor(Color.YELLOW);
      canvas.drawCircle(centerX,centerY,r,paint);
  }
  •   参考资料和推荐阅读:

https://blog.csdn.net/weixin_43858011/article/details/125102763

posted @   xiamaocheng  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示