Android 繪制圓?。?)---繪制簡單的圖形

參考文檔

自定義繪制圖片--參照上文,繪制了一個(gè)鐘表

其實(shí)學(xué)習(xí)知識(shí),只有自己一邊繪制,一邊了解才會(huì)學(xué)習(xí)的快呢,文章最后會(huì)附上項(xiàng)目地址:
不管是繪制多么復(fù)雜的控件,都需要一步一步的進(jìn)行,

  1. 首先是在繪制之前先重寫onMeasure()方法,測量和設(shè)置控件的一些大小
    setMeasuredDimension(measure(widthMeasureSpec, true), measure(heightMeasureSpec, false));

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

判斷specMode:

    // EXACTLY是精確尺寸,當(dāng)我們將控件的layout_width或layout_height指定為具體數(shù)值時(shí)如"50dip",或者為FILL_PARENT是,都是控件大小已經(jīng)確定的情況,都是精確尺寸。
    case MeasureSpec.EXACTLY:
    //AT_MOST是最大尺寸,當(dāng)控件的layout_width或layout_height指定為WRAP_CONTENT時(shí),控件大小一般隨著控件的子空間或內(nèi)容進(jìn)行變化,此時(shí)控件尺寸只要不超過父控件允許的最大尺寸即可
    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    :填充內(nèi)部 
             Paint.Style.FILL_AND_STROKE  :填充內(nèi)部和描邊 
             Paint.Style.STROKE  :僅描邊 
     */
     paintCircle.setStyle(Paint.Style.STROKE);//設(shè)置填充樣式
     paintCircle.setAntiAlias(true);//抗鋸齒功能     
      paintCircle.setStrokeWidth(borderWidth);//設(shè)置畫筆寬度
     canvas.drawCircle(getWidth() / 2, getHeight() / 2, r, paintCircle);//畫圓,圓心在中心位置,半徑為長寬小者的一半
    

不知道為什么復(fù)制代碼的時(shí)候,格式就亂了還要一個(gè)一個(gè)的去修改,這里我就不貼了,直接上傳我的
github項(xiàng)目
有興趣的同學(xué)可以看下,代碼里面的注視很全,應(yīng)該都可以看得懂

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容