一:繼承與View
class MyView: View {}
二:實作構造方法
//代碼實作,當使用代碼創建該視圖時呼叫該方法
constructor(context: Context) : super(context) {}
//xml實作,當使用xml方式創建該視圖是呼叫該方法
constructor(context: Context,attributeSet: AttributeSet) : super(context,attributeSet){}
三:若需要獲取視圖的是size則在OnSizeChanged()中獲取
當視圖的大小發生改變時呼叫該方法
override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
super.onSizeChanged(w, h, oldw, oldh)
}
四:繪制圖片
繪制圖片在ondraw方法中實作
//在該方法中繪制主要的內容
override fun onDraw(canvas: Canvas?) {
super.onDraw(canvas)
}
//在該方法中繪制子視圖的內容
override fun dispatchDraw(canvas: Canvas?) {
super.dispatchDraw(canvas)
}
//繪制前景
override fun onDrawForeground(canvas: Canvas?) {
super.onDrawForeground(canvas)
}
五:繪制的方法
drawColor 顏色
drawCircle 圓形
drawRect 矩形
drawPoint 點
drawOval 橢圓
drawLine 線
drawRoundRect 圓?矩形
drawArc 弧形
drawPath 自定義路徑
drawBitmap 繪圖
drawText 文字
drawTextOnPath 在路徑上繪制
StaticLayout 多行文字繪制
以路勁為例:
canvas?.drawPath(path,paint1)
Path():
Path().apply {
moveTo(0f,0f) //路徑的開頭的位置
lineTo(0f,500f) //畫一條線的結束位置
// quadTo(0f,1000f,500f,1000f) //二階貝塞爾曲線,前面兩個引數為峰點的位置,后兩個引數為結束位置
cubicTo(100f,0f,300f,1000f,400f,500f)//三階貝塞爾曲線,前四個引數分別為兩個峰點的引數,后兩個為結束位置
//在路徑中,若是沒有設定開頭位置*(moveTo())則以上一個結束位置為開頭位置
arcTo 弧形
close 閉合
}
Paint():
Paint().apply {
//畫筆的顏色
color = Color.BLACK
//樣式
style = Paint.Style.STROKE
//筆的寬度
strokeWidth = 10f
//畫筆的漸變
setShader()
LinearGradient 線性漸變
BitmapShader
ComposeShader
RadialGradient
SweepGradient
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/286121.html
標籤:Android
