先看看效果,圆形波纹无线扩散,大概就是这个样子

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函数进行精准测量即可。

更多相关文章

  1. android opengl es 飘落的星星
  2. :Android——ImageButton按下效果设计
  3. android文本彩色闪烁
  4. Android(安卓)自定义SeekBar 实现分段显示不同背景颜色
  5. Android图片代码换色,背景换色
  6. Android给TextView设置透明背景、圆角边框
  7. android textview改变部分文字的颜色和string.xml中文字的替换
  8. android 控件在不同状态下的内容样式与背景样式
  9. Android(安卓)自定义EditText输入框 带清空按钮

随机推荐

  1. 请问MySql 可以处理8千万条以上的记录吗,
  2. mysql启动脚本——指定数据目录并指定配
  3. PHP OOP和MySQLi连接=致命错误:调用未定
  4. InnoDB瓶颈:放宽ACID以提高性能
  5. Hive安装与部署集成mysql
  6. 0926MySQL中ICP索引下推
  7. 【转载】----CentOS 6.5下安装MySQL 5.6.
  8. 安装mysql5.7解压包中遇见的问题
  9. Linux 下整合Apache+tomcat+mysql
  10. Web分页显示数据