Android 绘制圆弧(2)---绘制简单的图形

2016-03-01  本文已影响735人  三季人

参考文档

自定义绘制图片--参照上文,绘制了一个钟表

其实学习知识,只有自己一边绘制,一边了解才会学习的快呢,文章最后会附上项目地址:
不管是绘制多么复杂的控件,都需要一步一步的进行,

  1. 首先是在绘制之前先重写onMeasure()方法,测量和设置控件的一些大小
    setMeasuredDimension(measure(widthMeasureSpec, true), measure(heightMeasureSpec, false));

     int specMode = MeasureSpec.getMode(origin);//得到模式
     int specSize = MeasureSpec.getSize(origin);//得到尺寸
    

判断specMode:

    // EXACTLY是精确尺寸,当我们将控件的layout_width或layout_height指定为具体数值时如"50dip",或者为FILL_PARENT是,都是控件大小已经确定的情况,都是精确尺寸。
    case MeasureSpec.EXACTLY:
    //AT_MOST是最大尺寸,当控件的layout_width或layout_height指定为WRAP_CONTENT时,控件大小一般随着控件的子空间或内容进行变化,此时控件尺寸只要不超过父控件允许的最大尺寸即可
    case MeasureSpec.AT_MOST:
    //UNSPECIFIED是未指定尺寸,这种情况不多,一般都是父控件是AdapterView,通过measure方法传入的模式。      
    case MeasureSpec.UNSPECIFIED:
  1. 首先是绘制外面最大的圆形
    //画外圆
    float borderWidth = DEFAULT_BORDER_WIDTH;
    float r = Math.min(getHeight() / 2, getWidth() / 2) - borderWidth / 2;//半径
    Paint paintCircle = new Paint();

     /** * 
             Paint.Style.FILL    :填充内部 
             Paint.Style.FILL_AND_STROKE  :填充内部和描边 
             Paint.Style.STROKE  :仅描边 
     */
     paintCircle.setStyle(Paint.Style.STROKE);//设置填充样式
     paintCircle.setAntiAlias(true);//抗锯齿功能     
      paintCircle.setStrokeWidth(borderWidth);//设置画笔宽度
     canvas.drawCircle(getWidth() / 2, getHeight() / 2, r, paintCircle);//画圆,圆心在中心位置,半径为长宽小者的一半
    

不知道为什么复制代码的时候,格式就乱了还要一个一个的去修改,这里我就不贴了,直接上传我的
github项目
有兴趣的同学可以看下,代码里面的注视很全,应该都可以看得懂

上一篇 下一篇

猜你喜欢

热点阅读