繪制的基本要素
onDraw(Canvas)?繪制方法
Canvas?繪制工具
Paint?調(diào)整風(fēng)格?粗細(xì)等
坐標(biāo)系: x y ,3D?會(huì)有z軸,x? 左到右,y?上至下,與數(shù)學(xué)中y顛倒
尺寸單位:?布局中 dp ,sp ,代碼中 px;dp?為了適配不同的尺寸
繪制的關(guān)鍵:
draw(Canvas )......(關(guān)鍵類:Paint)
Paint.ANTI_ALIAS_FLAG?抗鋸齒 paint.setFlag
像素值和DP轉(zhuǎn)化?TypedValue.applyDimension(TypeValue.COMPLEX_UNIT_DIP,value,rousources.displayMetrics)?
rousources.displayMetrics =?Resource.getSystem().getDisplayMetric
??
//dp 2 px
val Float.px
get() = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
this,
Resources.getSystem().displayMetrics
)
抗鋸齒原理:修改圖形,變得和原始不一樣,邊緣模糊化,半透明化,看起來視覺上平滑?
繪制需要有起點(diǎn)和終點(diǎn),兩點(diǎn)組合
繪制線 : canvas.drawLine?坐標(biāo)參數(shù) (start x, start y , end x ,end y,paint)
繪制圓: canvas.drawCircle?坐標(biāo)(cx , cy ,radius,paint)也就是?center x ,?center y ,?半徑
draw Path(path,point)
drawArc(left,top,right,bottom,startAngle?起始角度,sweepAngle?劃過角度,usecenter?是否連接中心,)
onSizeChange?尺寸改變時(shí)調(diào)用
path.reset()?重置
path.addCircle(centerx , center y, radius,orition?方向?順時(shí)針Path.Direction.CW和逆時(shí)針Path.Direction.CW );?添加圓----> CW = clockwise ,CCW =?counter-clockwise
CW,CCW作用:?配合填充方式判斷多個(gè)圖形方向相交部分填充還是其他
path.addRect?添加矩形()
填充方法:path.setfillType? = EVEN_ODD,INVERSE_EVEN_ODD,INVERSE_WINDING,WINDING
INVERSE_EVEN_ODD?是 EVEN_ODD的反規(guī)則
INVERSE_WINDING? ? ?是? ??WINDING的反規(guī)則
左右 +1 , -1
默認(rèn)是WINDING填充規(guī)則?如果朝一個(gè)方向繪制,那么相交的就都屬于內(nèi)部
EVEN_ODD?不管方向如何,每遇到相交點(diǎn)就+1,偶數(shù)是外部,基數(shù)是內(nèi)部
ext?貝塞爾曲線
PathMeasure : path準(zhǔn)備好之后
PathMeasure(path,forceCloseed 是否自動(dòng)閉合)
pathMeasure.length 獲取長(zhǎng)度
pathMeasure.getPosTan() 路徑的長(zhǎng)度的切腳
輔助類方法:范圍裁剪(clip......())和幾何變換(Matrix)? View的left / top /right /bottom 的任意一個(gè)點(diǎn)或者四個(gè)點(diǎn)的變換
還可以重寫其他的繪制方法控制覆蓋關(guān)系
paint:
strokeWidth 外線寬度
style?樣式?例如?Paint.Style.STROKE
setPathEffect(path,advance 提前量 前置量,phase 階段 空值 )設(shè)置pain效果 // PathDashPathEffect虛線
pathEffect會(huì)覆蓋原先值 用特效畫
canvas.translat(dx,dy)?偏移?橫向 ,?縱向
canvas.restore() 恢復(fù)
canvas.save()? 保存屬性
kotlin?for?遍歷 for((index,value) in list.withIndex)?去角標(biāo)索引文章來源:http://www.zghlxwxcb.cn/news/detail-674055.html
?Kotlin?const?常量文章來源地址http://www.zghlxwxcb.cn/news/detail-674055.html
到了這里,關(guān)于Android 之自定義繪制一的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!