自定義時鐘View,表盤的繪製

2021-07-30 14:20:05 字數 2274 閱讀 1145

實現的效果圖如下:

main中布局檔案:

values資料夾下新建乙個xml檔案,定義引數

1.自定義乙個類 myclock extends view,並設定統一的入口

public myclock(context context) 

public myclock(context context, attributeset attrs)

public myclock(context context, attributeset attrs, int defstyleattr)

2.測量控制項的寬高

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

private int measureheight(int heightmeasurespec) else

}return heightresult;

}private int measurewidth(int widthmeasurespec) else

}return widthresult;

}

3.----------------------現在就要開始繪製了---------------------------

我把他們封裝為方法

@override

protected void ondraw(canvas canvas)

3.1繪製表盤

private void biaopan(canvas canvas)
3.2繪製logo,正負代表方向

private void logo(canvas canvas)
3.3繪製數字的時間,預設 00:00:00

private void time(canvas canvas)  else 

if (mminutes < 10) else

if (mhour < 10) else

float v = mtimepaint.measuretext(replacemhour + replacemminutes + replacemsecond + ":" + ":");

canvas.drawtext(replacemhour + ":" + replacemminutes + ":" + replacemsecond, -v / 2, radius / 3 * 2, mtimepaint);

}

3.4繪製刻度線(讓畫布旋轉)

private void drgree(canvas canvas)  else 

canvas.rotate(360 / count, 0f, 0f);}}

3.5 畫表盤上的數字

private void hourtext(canvas canvas)  else }}

3.6 傳送一條空訊息,讓時間數字,走起來

@override

public boolean handlemessage(message message)

return true;

}

3.7畫時針分針秒針(必須要先儲存之前的畫的,不然會一起動)

private void hour(canvas canvas)
private void minutes(canvas canvas)
private void second(canvas canvas)

3.8 最後在中心畫點把指標覆蓋

private void point(canvas canvas)
直接的粘的**,看的不是很清楚,慢慢看咯

自定義表盤View

使用自定義view 屬性attrs檔案如下 表盤半徑 表盤相對控制項邊框距離 刻度相對表盤距離 常規刻度顏色 常規刻度長度 表盤整點刻度顏色 整點刻度長度 時針顏色 時針長度 分針顏色 分針長度 秒針顏色 秒針長度 表盤字型大小 表盤字型顏色 自定義view檔案 public class watch...

如何自定義繪製View

關於自定義view時代使用樣式,風格,大小的資源定義不再介紹,這裡注重介紹如何在ondraw canvas canvas 方法中去繪製所需要的view。主要體現在 paint canvas物件的使用 下面主要呈現乙個類似手錶的view的繪製 自定義view如下 package view import...

Android自定義View基礎繪製

1 onmeasure測量 計算寬高 2 viewgroup進行onlayout 基於位置和寬高布置到螢幕 3 ondraw檢視顯示自身內容 渲染 canvas 畫布,可以提供檢視顯示的載體,可以繪製文字 幾何圖形 影象 填充顏色 paint 畫筆,針對畫布需要繪製的內容的修飾 建立畫筆 paint...