RippleView效果图
希望是你们心心念念的有涟漪、波浪效果的自定义View
说明
RippleView系列- ->RippleView、 RippleView2、RippleView3
RippleView基础功能:
- 中心圆控制 开启 / 关闭 / 修改颜色
- 涟漪控制 开启 / 关闭 / 修改颜色
- 初始半径控制 涟漪初始大小与中心圆大小一致
- 涟漪扩散速度控制 实际上就是一个涟漪从出现到消亡的时间 越小扩散越快
- 涟漪扩散间距控制 就是指涟漪两两之间的间距
- 绘制次数控制 就是一个涟漪从出现到消亡被绘制的次数 相当于动画总帧数
代码
人狠话不多 注释超级详细
不要被长度吓到 开放性很高 所有属性基本都可以修改 因此GetSet方法很多
/**
* create by 星航指挥官
* create on 2020/12/13
* 不过是大梦一场空
* 课不过是孤影照惊鸿
*/
public class RippleView extends View {
//中心点坐标
private float x = 0;
private float y = 0;
//是否需要中心圆 默认需要
private boolean centry = true;
//是否开启涟漪
private boolean startRipple = true;
//中心圆颜色
private int centryColor = 0;
//涟漪颜色
private int rippleColor = 0;
//中心圆半径,同时也是涟漪扩散初始半径的默认值
private float minR = 25;
//涟漪扩散最大半径默认值
private float maxR = 100;
//涟漪扩散一圈的时间默认值
private float speed = 2;
//涟漪扩散间距默认值
private float spacing = 75;
//绘制次数
private float drawCount = 400;
//涟漪集合
private ArrayList<Ripple> ripples;
/*
* 构造器
* */
public RippleView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
//初始化数组
ripples = new ArrayList<>();
//获取用户自定义属性
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.RippleView);
//获取用户是否需要中心圆
centry = ta.getBoolean(R.styleable.RippleView_centry, centry