Android 实现水波纹动效

WaterRippleView核心文件
package com.manss.myapplication.widget.animation
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import android.view.View
import com.manss.myapplication.widget.DisplayUtil
import java.util.*
/**
* 水波纹动画view
*/
class WaterRippleView : View {
private var mMaxWaveAreaRadius = 0f
private var mWaveIntervalSize = 0f//波距 = 0f
private var mStirStep = 0f // 波移动的步幅 = 0f
private var mWidth = 0
private var mWaveStartWidth = 0f// px = 0f
private var mWaveEndWidth = 0f// px 最大半径,超过波消失 = 0f
private var mWaveColor = 0
private var mViewCenterX = 0f
private var mViewCenterY = 0f
private val rippleColor = Color.BLUE
//波动属性设置
private val mWavePaint = Paint()
//中心点属性设置
private val mWaveCenterShapePaint = Paint()
private var mFillAllView = false
private var mFillWaveSourceShapeRadius = 0f
private val mWaves: MutableList<Wave?> = ArrayList()
constructor(context: Context?, attrs: AttributeSet?) : super(
context,
attrs
) {
init()
}
constructor(context: Context?) : super(context) {
init()
}
private fun init() {
setWaveInfo(2f, 1f, 2f, 15f, rippleColor)
mWaveIntervalSize = DisplayUtil.dip2px(context, 20f).toFloat()
mWidth = DisplayUtil.dip2px(context, 2f)
//初始化波动最大半径
mWaveEndWidth = DisplayUtil.dip2px(context, 100f).toFloat()
}
override fun onLayout(

本文详细介绍了一种在Android中实现水波纹动画效果的方法,通过自定义View和Canvas绘图,展示了如何调整波纹的颜色、半径和移动速度等参数。
最低0.47元/天 解锁文章
1654

被折叠的 条评论
为什么被折叠?



