通過自定義 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...