猎豹清理大师波浪动画实现
感谢段大师的指导!
波浪效果源码:
自定义控件:实现
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;}
}
猎豹清理大师波浪动画实现相关推荐
- Android动画定时lnvaliate,猎豹清理大师波浪动画实现
感谢段大师的指导! 波浪效果源码: 自定义控件:实现 package com.apidemos2.animation.bezierview; import android.content.Contex ...
- 【安卓笔记】仿猎豹清理大师波浪效果
先来看效果: 实现方式----->自定义控件 核心代码: [java] view plain copy package com.example.wavedemo1; import android ...
- 仿猎豹清理大师波浪效果
转载自:http://blog.csdn.net/chdjj/article/details/38142953 先来看效果: 实现方式----->自定义控件 核心代码: package com. ...
- 【安卓注意事项】模仿猎豹清理大师波效应
先来看效果: 实现方式----->自己定义控件 核心代码: package com.example.wavedemo1; import android.content.Context; impo ...
- PMCAFF微课堂|猎豹清理大师亿万用户量产品背后的紫牛方法论,傅盛不会说的秘密...
嘉宾简介 分享主题 猎豹清理大师亿万用户量产品背后的紫牛方法论,付盛不会说的秘密 分享简介 分享形式:微信群分享 分享时长:1-2小时 课程大纲 1.分享猎豹清理大师亿万用户量产品背后的故事 2.什么 ...
- 系统清理软件测试,用户体验最好的清理APP 猎豹清理大师软件评测
从iOS7升级到iSO8,让iPhone用户意识到一个问题--手机空间又不够用了!对于iPhone而言,想获得更多的可用空间,只能靠删之前的照片视频和重装APP清理缓存等方式来挤出更多空间.而对于安卓 ...
- Android 自定义控件-高仿猎豹清理大师自定义内存开口圆环控件
技术:Android+java 概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思 ...
- Android 自定义View修炼-高仿猎豹清理大师自定义内存开口圆环比例进度View
一.概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思路,利用上下两张图,旋转上面 ...
- android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...
转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...
最新文章
- android.os.NetworkOnMainThreadException
- 【SRIO】5、Xilinx RapidIO核例子工程源码分析
- 利用外部知识增加QA答案自然程度,这是阿里的问答模型新思路丨EMNLP
- shell基础二:查找技巧,find及xargs的使用
- GDCM:gdcm::TagToType的测试程序
- Linux中Shell的算数运算符和位运算符用法笔记
- Codeforces Round #599 (Div. 2) E. Sum Balance 图转换 + 子集dp + 环
- 【最短路】【SPFA】电车 (luogu 1346)
- [css] 怎么实现移动端的边框0.5px?
- 学习SharePoint记录,微软给出的的Application Templates很有帮助呢
- silverlight 跨域socket
- anaconda moviepy_Anaconda、Jupyter Notebook安装与使用
- 百度推出Apollo 3.5和Apollo Enterprise
- Delaunay三角化实现原理
- Vue.js刷新当前页面
- Django静态文件的加载以及STATIC_URL、 STATIC_ROOT 、STATICFILES_DIRS的区别
- 在尾注生成的参考文献后添加致谢等内容
- Java 哈密顿距离
- 可以写一个表白代码吗
- 【echarts】柱状图正负值双色