自定義View 鐘錶

2021-09-12 04:44:43 字數 1592 閱讀 2516

通過自定義 view 來實現乙個鐘錶;

[img]

【**分析】

重寫 ondraw

畫外圓

/*** 畫外圓和中心實心圓

* @param canvas

*/private void drawcircle(canvas canvas)

畫刻度

/*** 畫刻度

* @param canvas

*/private void drawscale(canvas canvas)

canvas.drawline(mwidth/2, mheight/2 - mdiameter/2, mwidth/2, mheight/2 - mdiameter/2 + 40, paint);

paint.setcolor(mtextcolor);

canvas.drawtext(timetext, mwidth/2-paint.measuretext(timetext)/2, mheight/2-mdiameter/2+80, paint);

} else

// 旋轉畫布,每次旋轉6度

canvas.rotate(6,mwidth/2, mheight/2);}}

畫指標

/*** 畫指標:時針,分針,秒針

* @param canvas

*/private void drawindicator(canvas canvas)

private float getleftby(int indicator)

float left = (float) math.sin(digit/60f * math.pi*2) * r;

if(digit<=30) else

}private float gettopby(int indicator)

float left = (float) math.cos(digit/60f * math.pi*2) * r;

if(15<=digit && digit<=45) else

}

重寫 onmesure

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

private int measuredwidth(int widthmeasurespec) else

}return result;

}private int measuredheight(int heightmeasurespec) else

}return result;

}

用新執行緒啟動鐘錶

/*** 啟動鐘錶

*/private void startclock() catch (interruptedexception e) }}

}).start();

}

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...