地震波
来源:互联网 发布:黑骑士卫星知乎 编辑:程序博客网 时间:2024/05/21 14:45
先说说思路,看图
如图有4个实心圆环,每个实心圆环的透明度不同,从内到外,圆环的透明度从不透明到全透明。
代码实现时,我们不断的去画圆环,并且每画一次就改变圆环的透明度和半径大小。初始时,先画一个圆环,不断减少透明度和增加圆环半径,当圆环半径增加到一个限度时,开始画内层圆环并不断减少透明度和增加圆环半径,每增加一个圆环就保存起来,当增加到4个圆环是就删除掉最外层那个圆环,这样就看起来地震波效果了。
效果图
重写onMeasure方法,计算出最外层圆环的最大半径maxWidth,并且初始化第一个圆环的数据,透明度和半径初始值。
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); maxWidth = getMeasuredWidth() / 2; if (maxWidth > 0 && alphaList.isEmpty() && startWidthList.isEmpty()) { //圆心的透明度,如此判断是为了防止最外层圆环透明度未减少为0就被移除,从而产生闪屏 alphaList.add(maxWidth > 255 ? 255 : maxWidth); startWidthList.add(0f); }}
重点来了,重写onDraw方法,不断画圆环
@Overridepublic void onDraw(Canvas canvas) { super.onDraw(canvas); //依次绘制 同心圆 for (int i = 0; i < alphaList.size(); i++) {//画出所有的圆环 int alpha = alphaList.get(i); float startWidth = startWidthList.get(i); paint.setAlpha(alpha); canvas.drawCircle(getWidth() / 2, getHeight() / 2, startWidth, paint); //同心圆扩散 if (isStarting && alpha > 0 && startWidth < maxWidth) {//不断改变每个圆环的透明度和半径值 alphaList.set(i, alpha - 1); startWidthList.set(i, startWidth + 1); } } if (isStarting && (startWidthList.get(startWidthList.size() - 1).intValue()) == maxWidth / CircleNum) {//内层圆环的半径达到规定宽度时,增加一个圆环 alphaList.add(maxWidth > 255 ? 255 : maxWidth); startWidthList.add(0f); } //同心圆数量达到5个,删除最外层圆 if (isStarting && startWidthList.size() == (CircleNum + 1)) {//当圆环数量达到5个个时,删除最外层圆环 startWidthList.remove(0); alphaList.remove(0); } //刷新界面 invalidate();}
代码地址
http://download.csdn.net/download/gaopin_xianlu/10149065
阅读全文
0 0
- 地震波
- Android地震波效果SeismicWaveView
- android-仿图片地震波SeismicWaveView
- 地震波处理软件的开发-框架介绍
- 地震波的种类 gif动画演示
- 用Android和IOT检测地震波
- 北京地震波成像研究组(Beijing Seismic Imaging Group)
- Android动画特效之水波(地震波)报警动画
- [Android实例] 类似地震波向外扩散的自定义控件
- 最近做了个并行的计算各项异性地震波的有限元程序(cuda+mpi),可以计算超大规模问题,网格点个数可以几百亿都没有问题.
- 一个搜索引擎搜索出来的目录与其内容不同步的实例终结篇
- 由localtime引发的函数可重入问题
- 百练+网络流Dinic模版,EK空间使用不够了
- BOM的学习(2)
- sourcetree的使用
- 地震波
- Android开发---十款 Material Design 风格的 Android 开源项目
- oracle报错Connected to an idle instance
- java 对象和类
- 翻译布尔表达式
- NoSQL之MongoDB概念
- tomcat日志配置(停止日志或修改日志路径)
- 深度学习总结(八)——训练、开发和测试集及偏差和方差
- 第二周项目三