Android动画定时lnvaliate,猎豹清理大师波浪动画实现
感谢段大师的指导!
波浪效果源码:
自定义控件:实现
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,猎豹清理大师波浪动画实现相关推荐
- 猎豹清理大师波浪动画实现
感谢段大师的指导! 波浪效果源码: 自定义控件:实现 package com.apidemos2.animation.bezierview;import android.content.Context ...
- 【安卓笔记】仿猎豹清理大师波浪效果
先来看效果: 实现方式----->自定义控件 核心代码: [java] view plain copy package com.example.wavedemo1; import android ...
- 仿猎豹清理大师波浪效果
转载自:http://blog.csdn.net/chdjj/article/details/38142953 先来看效果: 实现方式----->自定义控件 核心代码: package com. ...
- Android 自定义控件-高仿猎豹清理大师自定义内存开口圆环控件
技术:Android+java 概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思 ...
- 【安卓注意事项】模仿猎豹清理大师波效应
先来看效果: 实现方式----->自己定义控件 核心代码: package com.example.wavedemo1; import android.content.Context; impo ...
- Android 自定义View修炼-高仿猎豹清理大师自定义内存开口圆环比例进度View
一.概述 看见猎豹清理大师的内存开口圆环比例进度 挺有意思的,于是就是想自己实现下这样的效果,于是反编译了猎豹清理 大师的app看了下,原来是有两张图,于是脑子里就过了下思路,利用上下两张图,旋转上面 ...
- PMCAFF微课堂|猎豹清理大师亿万用户量产品背后的紫牛方法论,傅盛不会说的秘密...
嘉宾简介 分享主题 猎豹清理大师亿万用户量产品背后的紫牛方法论,付盛不会说的秘密 分享简介 分享形式:微信群分享 分享时长:1-2小时 课程大纲 1.分享猎豹清理大师亿万用户量产品背后的故事 2.什么 ...
- 系统清理软件测试,用户体验最好的清理APP 猎豹清理大师软件评测
从iOS7升级到iSO8,让iPhone用户意识到一个问题--手机空间又不够用了!对于iPhone而言,想获得更多的可用空间,只能靠删之前的照片视频和重装APP清理缓存等方式来挤出更多空间.而对于安卓 ...
- android垃圾清理动画,[Android开发实战]金山清理大师(猎豹清理大师)一键加速快捷方式动画实现...
转载请注明出处:http://blog.csdn.net/ruils/article/details/16922557 最近有人问我金山清理大师桌面上的一键加速的动画是如何实现的,我下了个金山清理大师 ...
最新文章
- win7怎么清理java缓存文件夹_Win7怎么清除浏览器缓存?清除电脑缓存的妙招
- P1801 黑匣子_NOI导刊2010提高(06)
- JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信
- gitattributes手册
- 在html里面动画变颜色,html – 在悬停时填充文本颜色动画,带有动画颜色
- jersey 入门示例_Jersey Web Service Hello World Java示例
- 东软睿云用户认证_【硬件资讯】尘埃落定!11代酷睿规格曝光!i7、i9难分差距,退回8核16线程!...
- mysql+跨服务器+写入_MySQL中使用FREDATED引擎实现跨数据库服务器、跨实例访问
- mysql正删改查返回值_MySQL增删改查
- Android的Crash日志记录
- Docker error : no space left on device docker 空间不足
- android 邮箱注册功能,手机邮箱怎么注册登录(安卓手机邮箱设置教程)
- CSDN调整文章图片
- 安卓pdf阅读器_推荐一款手机PDF阅读器、编辑器xodo docs安卓版
- 阿里云播放器SDK的正确打开方式 | Aliplayer Web播放器介绍及功能实现(三)
- 关于wi-fi无线局域网的若干问题
- 极点五笔状态栏和候选窗口显隐
- IPA签名是怎么回事儿?
- 【速览】2022年中国光伏逆变器行业市场现状及企业格局分析:行业需求增加,发展迅速[图]
- 软件安装管家(2021年1月8日更新)
热门文章
- 携创教育:成人自考本科全部流程!
- Java自学,如何玩转IoC-?跟着我的脚步
- 仓库处理中 无法修改_虾皮跨境:Shopee SLS仓库异常件退货流程。附:周三晚开个课。...
- 游戏账号服务器登不上,【彩虹六号】我玩彩虹六号登不上游戏服务器,育碧平台也登录不上...
- C#中字典的排序方法
- PBR (Physically Based Rendering)概念篇
- CSV文件拆分_行拆分
- vivo x3l Android 5.0,6.75mm超薄 完美升级4G vivo X3L图赏
- cad布局怎么用_CAD制图初学入门攻略又双叒叕来啦!千万别错过哦
- python加颜色_python抠图和添加背景颜色