美文网首页
Android 绘制圆弧(2)---绘制简单的图形

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

作者: 三季人 | 来源:发表于2016-03-01 11:45 被阅读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项目
    有兴趣的同学可以看下,代码里面的注视很全,应该都可以看得懂

    相关文章

      网友评论

          本文标题:Android 绘制圆弧(2)---绘制简单的图形

          本文链接:https://www.haomeiwen.com/subject/izygkttx.html