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

2023-10-16 19:48

本文主要是介绍【安卓笔记】仿猎豹清理大师波浪效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先来看效果:


实现方式----->自定义控件
核心代码:
package com.example.wavedemo1;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.View;
/*** @author Rowandjj**仿猎豹清理大师波浪效果*/
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 = 70;//透明度private int mColor = Color.BLUE;private float mAmplitude = 6.0F; // 振幅private final Paint mPaint = new Paint();private float mWateLevel = 0.5F;//水高(0~1)private Path mPath;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();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){canvas.save();mPaint.setAlpha(mAlpha);mPaint.setColor(mColor);// 得到控件的宽高int width = getWidth();int height = getHeight();// 如果未开始(未调用startWave方法),绘制一个矩形if ((!mStarted) || (width == 0) || (height == 0)){canvas.drawRect(0.0F, height / 2, width, height, mPaint);return;}if (this.c >= 8388607L){this.c = 0L;}//每次onDraw时c都会自增this.c = (1L + this.c);float f1 = height * (1.0F - mWateLevel);int top = (int) (f1 + mAmplitude);mPath.reset();// 绘制矩形,即水面静止时的高度canvas.drawRect(0.0F, top, width, height, mPaint);int startX = 0;//波浪效果while (startX < width){int startY = (int) (f1 - mAmplitude* Math.sin(Math.PI* (2.0F * (startX + this.c * width * this.f))/ width));canvas.drawLine(startX, startY, startX, top, mPaint);startX++;}canvas.restore();}/*** 设置振幅* @param amplitued*/public void setAmplitude(float amplitued){mAmplitude = amplitued;}/*** 设置透明度* @param alpha*/public void setWaterAlpha(float alpha){this.mAlpha = ((int) (255.0F * alpha));mPaint.setAlpha(this.mAlpha);}/*** 设置颜色* @param color*/public void setColor(int color){this.mColor = color;}/*** 设置水面高度* @param paramFloat*/public void setWaterLevel(float paramFloat){mWateLevel = paramFloat;}@Overrideprotected void onAttachedToWindow(){super.onAttachedToWindow();// 关闭硬件加速,防止异常unsupported operation exceptionthis.setLayerType(View.LAYER_TYPE_SOFTWARE, null);}
}


 向普通控件一样,在布局文件中配置: 
 <com.example.wavedemo1.WaterWaveViewandroid:id="@+id/wav"android:layout_width="match_parent"android:layout_height="match_parent"/>

然后在代码中通过调用startWave方法使水面开始波动,同时可以调用set方法控制其属性。



这篇关于【安卓笔记】仿猎豹清理大师波浪效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/220397

相关文章

基于Python实现PDF动画翻页效果的阅读器

《基于Python实现PDF动画翻页效果的阅读器》在这篇博客中,我们将深入分析一个基于wxPython实现的PDF阅读器程序,该程序支持加载PDF文件并显示页面内容,同时支持页面切换动画效果,文中有详... 目录全部代码代码结构初始化 UI 界面加载 PDF 文件显示 PDF 页面页面切换动画运行效果总结主

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

电脑多久清理一次灰尘合? 合理清理电脑上灰尘的科普文

《电脑多久清理一次灰尘合?合理清理电脑上灰尘的科普文》聊起电脑清理灰尘这个话题,我可有不少话要说,你知道吗,电脑就像个勤劳的工人,每天不停地为我们服务,但时间一长,它也会“出汗”——也就是积累灰尘,... 灰尘的堆积几乎是所有电脑用户面临的问题。无论你的房间有多干净,或者你的电脑是否安装了灰尘过滤器,灰尘都

使用Python实现生命之轮Wheel of life效果

《使用Python实现生命之轮Wheeloflife效果》生命之轮Wheeloflife这一概念最初由SuccessMotivation®Institute,Inc.的创始人PaulJ.Meyer... 最近看一个生命之轮的视频,让我们珍惜时间,因为一生是有限的。使用python创建生命倒计时图表,珍惜时间

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

防近视护眼台灯什么牌子好?五款防近视效果好的护眼台灯推荐

在家里,灯具是属于离不开的家具,每个大大小小的地方都需要的照亮,所以一盏好灯是必不可少的,每个发挥着作用。而护眼台灯就起了一个保护眼睛,预防近视的作用。可以保护我们在学习,阅读的时候提供一个合适的光线环境,保护我们的眼睛。防近视护眼台灯什么牌子好?那我们怎么选择一个优秀的护眼台灯也是很重要,才能起到最大的护眼效果。下面五款防近视效果好的护眼台灯推荐: 一:六个推荐防近视效果好的护眼台灯的

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear