android 扩散水波纹效果
16lz
2021-01-25
先看看效果,圆形波纹无线扩散,大概就是这个样子
github地址:https://github.com/Larissa-x/WaveView
直接依赖implementation 'com.github.Larissa-x:WaveView:1.0.1'别忘了添加支持jitpack库repositories { maven { url 'https://jitpack.io' }}
上代码,使用自定义View
public class WaveView extends View { private Paint paint; private int maxWidth = 360; // 是否运行 private boolean isStarting = false; private List alphaList = new ArrayList(); private List startWidthList = new ArrayList(); public WaveView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } public WaveView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public WaveView(Context context) { super(context); init(); } private void init() { paint = new Paint();// 设置波纹的颜色// paint.setColor(0x0059ccf5);//可以修改自己喜欢的颜色 paint.setColor(Color.argb(153,19,154,255)); alphaList.add("153");// 圆心的不透明度 startWidthList.add("0"); } @Override public void onDraw(Canvas canvas) { super.onDraw(canvas); setBackgroundColor(Color.TRANSPARENT);// 颜色:完全透明// 依次绘制 同心圆 for (int i = 0; i < alphaList.size(); i++) { int alpha = Integer.parseInt(alphaList.get(i));// 圆半径 int startWidth = Integer.parseInt(startWidthList.get(i)); paint.setAlpha(alpha);// 这个半径决定你想要多大的扩散面积 canvas.drawCircle(getWidth() / 2, getHeight() / 2, startWidth + 50, paint);// 同心圆扩散 if (isStarting && alpha > 0 && startWidth < maxWidth) { alphaList.set(i, (alpha - 1) + ""); startWidthList.set(i, (startWidth + 2) + ""); } } if (isStarting && Integer .parseInt(startWidthList.get(startWidthList.size() - 1)) == maxWidth / 3) { alphaList.add("153"); startWidthList.add("0"); }// 同心圆数量达到10个,删除最外层圆 if (isStarting && startWidthList.size() == 10) { startWidthList.remove(0); alphaList.remove(0); }// 刷新界面 invalidate(); } // 执行动画 public void start() { isStarting = true; } // 停止动画 public void stop() { isStarting = false; } // 判断是都在不在执行 public boolean isStarting() { return isStarting; }
看效果还是可以的,如果需求需要控制大小等,自己重写onMeasure函数进行精准测量即可。
更多相关文章
- android opengl es 飘落的星星
- :Android——ImageButton按下效果设计
- android文本彩色闪烁
- Android(安卓)自定义SeekBar 实现分段显示不同背景颜色
- Android图片代码换色,背景换色
- Android给TextView设置透明背景、圆角边框
- android textview改变部分文字的颜色和string.xml中文字的替换
- android 控件在不同状态下的内容样式与背景样式
- Android(安卓)自定义EditText输入框 带清空按钮