本篇為了加深自定義View的理解,來一篇數(shù)學(xué)基礎(chǔ)的,也回顧下初中知識 ps:以前感覺高中數(shù)學(xué)好并沒什么卵用耀销,現(xiàn)在好像有點(diǎn)用處了酥郭,還有手勢滑動的速度來處理相應(yīng)業(yè)務(wù)需求(下篇再更)。
話不多說猴娩,先上公式
數(shù)學(xué)中是這樣求坐標(biāo)點(diǎn)的
圓心坐標(biāo):(x0,y0)
半徑:r
角度:a
圓周率: PI
則圓上任一點(diǎn)為:(x1,y1)
x1 = x0 + r * cos(a * PI /180 )
y1 = y0 + r * sin(a * PI /180 )
再看java代碼
private void drawNomal(Canvas canvas) {
paint = new Paint();//初始化畫筆
//繪制畫布背景
canvas.drawColor(Color.GRAY);
//設(shè)置畫筆顏色
paint.setColor(Color.parseColor("#f00000"));
//設(shè)置畫筆為空心 如果將這里改為Style.STROKE 將這個圖中的實(shí)線圓柱體就變成空心的
paint.setStyle(Paint.Style.FILL);
canvas.save();
//畫圓
canvas.drawCircle(width / 2, height / 2, 200, paint);
paint.setColor(Color.parseColor("#ffffff"));
for (int i = 0; i < 12; i++) {
//中心坐標(biāo)
//x = width / 2 ;//我這里是以屏幕中心為坐標(biāo)點(diǎn) 所以寬高直接除以2
// y = height / 2;//我這里是以屏幕中心為坐標(biāo)點(diǎn) 所以寬高直接除以2
//30 代表角度,200代表半徑 這些都是可以自定義的
//公式 java中有快捷求cos sin得方法。就是這樣了
int x = (int) Math.round(Math.sin(Math.toRadians(30 * i)) * 200);
int y = (int) Math.round(Math.cos(Math.toRadians(30 * i)) * 200);
canvas.drawLine(width / 2, height / 2, width / 2 + x, height / 2 - y, paint);
canvas.drawCircle(width/2+x,height/2-y,10,paint);
}
}
只要傳入我們view里面得畫布就可以實(shí)現(xiàn)以下效果
看到這里你會說這有什么diao用拔莱?
但是我們可以衍生出來的圓形菜單就是這樣做的鴨!隘竭!