欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

自定义绘制View常用方法

程序员文章站 2023-12-31 17:40:52
一:继承与View class MyView: View {}二:实现构造方法 //代码实现,当使用代码创建该视图时调用该方法constructor(context: Context) : super(context) {}//xml实现,当使用xml方式创建该视图是调用该方法constructor ......

一:继承与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
}

上一篇:

下一篇: