感谢段大师的指导!

波浪效果源码:

自定义控件:实现

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() {

@Override

public void handleMessage(android.os.Message msg) {

if (msg.what == 0) {

invalidate();

if (mStarted) {

mHandler.sendEmptyMessageDelayed(0, 60L);

}

}

}

};

}

@Override

protected 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();

}

@Override

protected 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,猎豹清理大师波浪动画实现相关推荐

  1. 猎豹清理大师波浪动画实现

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. win7怎么清理java缓存文件夹_Win7怎么清除浏览器缓存?清除电脑缓存的妙招
  2. P1801 黑匣子_NOI导刊2010提高(06)
  3. JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信
  4. gitattributes手册
  5. 在html里面动画变颜色,html – 在悬停时填充文本颜色动画,带有动画颜色
  6. jersey 入门示例_Jersey Web Service Hello World Java示例
  7. 东软睿云用户认证_【硬件资讯】尘埃落定!11代酷睿规格曝光!i7、i9难分差距,退回8核16线程!...
  8. mysql+跨服务器+写入_MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
  9. mysql正删改查返回值_MySQL增删改查
  10. Android的Crash日志记录
  11. Docker error : no space left on device docker 空间不足
  12. android 邮箱注册功能,手机邮箱怎么注册登录(安卓手机邮箱设置教程)
  13. CSDN调整文章图片
  14. 安卓pdf阅读器_推荐一款手机PDF阅读器、编辑器xodo docs安卓版
  15. 阿里云播放器SDK的正确打开方式 | Aliplayer Web播放器介绍及功能实现(三)
  16. 关于wi-fi无线局域网的若干问题
  17. 极点五笔状态栏和候选窗口显隐
  18. IPA签名是怎么回事儿?
  19. 【速览】2022年中国光伏逆变器行业市场现状及企业格局分析:行业需求增加,发展迅速[图]
  20. 软件安装管家(2021年1月8日更新)

热门文章

  1. 携创教育:成人自考本科全部流程!
  2. Java自学,如何玩转IoC-?跟着我的脚步
  3. 仓库处理中 无法修改_虾皮跨境:Shopee SLS仓库异常件退货流程。附:周三晚开个课。...
  4. 游戏账号服务器登不上,【彩虹六号】我玩彩虹六号登不上游戏服务器,育碧平台也登录不上...
  5. C#中字典的排序方法
  6. PBR (Physically Based Rendering)概念篇
  7. CSV文件拆分_行拆分
  8. vivo x3l Android 5.0,6.75mm超薄 完美升级4G vivo X3L图赏
  9. cad布局怎么用_CAD制图初学入门攻略又双叒叕来啦!千万别错过哦
  10. python加颜色_python抠图和添加背景颜色