kotllin自定义view_kotlin自定义view

本文通过创建animator_View类展示了如何在Kotlin中自定义View并利用ValueAnimator实现动画效果。详细介绍了从继承View、设置属性、测量尺寸到在onDraw方法中绘制各个元素的过程,以及如何通过start()和stop()函数控制动画的开始和结束。
摘要由CSDN通过智能技术生成

思路:

自定义的view类继承于view类,在xml中赋予它布局属性,在MainActivity中调用xml定义的自己写的view;使用ValueAnimator改变onDraw中绘画的控件的属性,当属性的值改变时,会触发invalidate()函数,系统自己去调用onDraw方法,就形成了动画。

代码:

自定义view的类:

class animator_View : View {

constructor(context: Context,attributeSet: AttributeSet): super(context,attributeSet)

// 高阶函数

var callBack:((Int) -> Boolean)? = null

var pregress = 0

set(value){

field = value

Log.v("yk","我是set + $field")

}

private val mPaint1 by lazy {

Paint().also {

it.color = Color.GRAY

it.style = Paint.Style.FILL

}

}

private val mPaint2 by lazy {

Paint().also {

it.color = Color.BLUE

it.style = Paint.Style.FILL

}

}

private val mPaint3 by lazy {

Paint().also {

it.color = Color.BLUE

it.style = Paint.Style.FILL

}

}

// 画√

private val mPaint4 by lazy {

Paint().also {

it.color = Color.WHITE

it.style = Paint.Style.STROKE

it.strokeWidth = 5f

it.strokeCap = Paint.Cap.ROUND;

}

}

// 线

private var line1X:Float = 0f

private var line1Y:Float = 0f

private var line2X:Float = 0f

private var line2Y:Float = 0f

// 保存图片的宽高

private var ykWidth:Float = 0f

private var ykHeight:Float = 0f

// 第一次图层的y坐标

private var firstX:Float = 0f

// 第二次图片的x 坐标

private var seondX:Float = 0f

private var seconY:Float = 0f

// 第二个图层两端缩进

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值