感谢段大师的指导!

波浪效果源码:

自定义控件:实现

package com.apidemos2.animation.bezierview;import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Region;
import android.graphics.Path.Direction;
import android.graphics.Region.Op;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;import com.apidemos2.utils.HardwareAccUtils;
import com.apidemos2.utils.Utils;public class WaterWaveView  extends View{private Handler mHandler;private long c = 0L;private boolean mStarted = false;private final float f = 0.033F;private int mAlpha = 31;private final int mColor = Color.GREEN;private float mAmplitude = 10.0F; // 振幅private final Paint mPaint = new Paint();private float mWateLevel = 0.5F;private Path mPath;private int mScreenWidth;private int mScreenHeight;public WaterWaveView(Context paramContext) {super(paramContext);init(paramContext);}public WaterWaveView(Context paramContext, AttributeSet paramAttributeSet) {super(paramContext, paramAttributeSet);init(paramContext);}public void startWave() {if (!mStarted) {this.c = 0L;mStarted= true;this.mHandler.sendEmptyMessage(0);}}private void init(Context context) {mPaint.setStrokeWidth(1.0F);mPaint.setColor(mColor);mPaint.setAlpha(mAlpha);mPath = new Path();mScreenWidth = Utils.getScreenWidth(context);mScreenHeight = Utils.getScreenHeight(context);mHandler = new Handler() {@Overridepublic void handleMessage(android.os.Message msg) {if (msg.what == 0) {invalidate();if (mStarted) {mHandler.sendEmptyMessageDelayed(0, 60L);}}}};}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.save();int width = getWidth();int height = getHeight();if ((!mStarted) || (width == 0) || (height == 0)) {canvas.drawRect(0.0F, height / 2, width, height, mPaint);return;}if (this.c >= 8388607L) {this.c = 0L;}this.c = (1L + this.c);float f1 = height * (1.0F - mWateLevel);int top = (int) (f1 + mAmplitude);mPath.reset();mPath.addCircle(mScreenWidth/2,mScreenWidth/2, mScreenWidth/2, Path.Direction.CCW);canvas.clipPath(mPath, Region.Op.REPLACE);canvas.drawRect(0.0F, top, width, height, mPaint);//   canvas.drawPath(mPath, mPaint);/*   RectF rectF = new RectF(0.0F, top + 100, width, height);canvas.drawArc(rectF, 0, 180, true, mPaint);*/int n = (int) (f1 - this.mAmplitude* Math.sin(Math.PI * (2.0F * (0.0F + this.c * width * this.f)) / width));int startX = 0;int stopX = 0;while (stopX < width) {int startY = (int) (f1 - mAmplitude* Math.sin(Math.PI * (2.0F * (stopX + this.c * width * this.f))/ width));canvas.drawLine(startX, n, stopX, startY, mPaint);canvas.drawLine(stopX, startY, stopX, top, mPaint);int i4 = stopX + 1;startX = stopX;stopX = i4;n = startY;}canvas.restore();}@Overrideprotected void onAttachedToWindow() {super.onAttachedToWindow();HardwareAccUtils.setLayerTypeAsSoftware(this);}public void setAmplitude(float amplitued) {mAmplitude = amplitued;}public void setWaterAlpha(float alpha) {this.mAlpha = ((int) (255.0F * alpha));mPaint.setAlpha(this.mAlpha);}public void setWaterLevel(float paramFloat) {mWateLevel = paramFloat;}
}

猎豹清理大师波浪动画实现相关推荐

  1. Android动画定时lnvaliate,猎豹清理大师波浪动画实现

    感谢段大师的指导! 波浪效果源码: 自定义控件:实现 package com.apidemos2.animation.bezierview; import android.content.Contex ...

  2. 【安卓笔记】仿猎豹清理大师波浪效果

    先来看效果: 实现方式----->自定义控件 核心代码: [java] view plain copy package com.example.wavedemo1; import android ...

  3. 仿猎豹清理大师波浪效果

    转载自:http://blog.csdn.net/chdjj/article/details/38142953 先来看效果: 实现方式----->自定义控件 核心代码: package com. ...

  4. 【安卓注意事项】模仿猎豹清理大师波效应

    先来看效果: 实现方式----->自己定义控件 核心代码: package com.example.wavedemo1; import android.content.Context; impo ...

  5. PMCAFF微课堂|猎豹清理大师亿万用户量产品背后的紫牛方法论,傅盛不会说的秘密...

    嘉宾简介 分享主题 猎豹清理大师亿万用户量产品背后的紫牛方法论,付盛不会说的秘密 分享简介 分享形式:微信群分享 分享时长:1-2小时 课程大纲 1.分享猎豹清理大师亿万用户量产品背后的故事 2.什么 ...

  6. 系统清理软件测试,用户体验最好的清理APP 猎豹清理大师软件评测

    从iOS7升级到iSO8,让iPhone用户意识到一个问题--手机空间又不够用了!对于iPhone而言,想获得更多的可用空间,只能靠删之前的照片视频和重装APP清理缓存等方式来挤出更多空间.而对于安卓 ...

  7. Android 自定义控件-高仿猎豹清理大师自定义内存开口圆环控件

    技术:Android+java 概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思 ...

  8. Android 自定义View修炼-高仿猎豹清理大师自定义内存开口圆环比例进度View

    一.概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思路,利用上下两张图,旋转上面 ...

  9. android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...

    转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...

最新文章

  1. android.os.NetworkOnMainThreadException
  2. 【SRIO】5、Xilinx RapidIO核例子工程源码分析
  3. 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP
  4. shell基础二:查找技巧,find及xargs的使用
  5. GDCM:gdcm::TagToType的测试程序
  6. Linux中Shell的算数运算符和位运算符用法笔记
  7. Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
  8. 【最短路】【SPFA】电车 (luogu 1346)
  9. [css] 怎么实现移动端的边框0.5px?
  10. 学习SharePoint记录,微软给出的的Application Templates很有帮助呢
  11. silverlight 跨域socket
  12. anaconda moviepy_Anaconda、Jupyter Notebook安装与使用
  13. 百度推出Apollo 3.5和Apollo Enterprise
  14. Delaunay三角化实现原理
  15. Vue.js刷新当前页面
  16. Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
  17. 在尾注生成的参考文献后添加致谢等内容
  18. Java 哈密顿距离
  19. 可以写一个表白代码吗
  20. 【echarts】柱状图正负值双色

热门文章

  1. JAVA 判断字符串是否可转化为JSONObject、JSONArray
  2. 软件设计之耦合性与内聚性的区别
  3. VMware安装XP
  4. NumPy和Matplotlib绘图
  5. 充电宝一般买多大容量?充电宝容量越大越好吗
  6. Android Spring动画–基于物理的动画
  7. Dell服务器上电自启动
  8. 生活随笔(5.31)
  9. C语言控制台打印输出整齐问题
  10. 买卖股票的最佳时机四