今天要实现的是水波纹效果,很炫的哦,可以拿来做一些特效。
以下是代码:
public class MyWave extends View{ /** * 二个相临波浪中心点的最小距离 */ private static final int DIS_SOLP = 13; /** * true表示开始播放动画 * flase表示动画播放结束 */ protected boolean isRunning = false; /** * 装一个一个的水波纹 */ private ArrayList<Wave> wList; public MyWave(Context context, AttributeSet attrs) { super(context, attrs); wList = new ArrayList<MyWave.Wave>(); } private Handler handler = new Handler(){ public void handleMessage(android.os.Message msg) { //刷新数据 flushData(); //刷新页面 invalidate(); //循环动画 if (isRunning) { handler.sendEmptyMessageDelayed(0, 50); } }; }; @Override protected void onDraw(Canvas canvas) { //开始画波浪了 for (int i = 0; i < wList.size(); i++) { //圆环的参数 Wave wave = wList.get(i); canvas.drawCircle(wave.pointX, wave.pointY, wave.radius, wave.paint); } } @Override public boolean onTouchEvent(MotionEvent event) { super.onTouchEvent(event); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_MOVE: int x = (int) event.getX(); int y = (int) event.getY(); addPoint(x,y); break; default: break; } return true; } /** * 添加新的水波浪中心点(圆心) * @param x * @param y */ private void addPoint(int x, int y) { if(wList.size() == 0){ addPoint2List(x,y); /* * 第一次启动动画 */ isRunning = true; handler.sendEmptyMessage(0); }else{ //取最后一个波浪 Wave w = wList.get(wList.size()-1); if(Math.abs(w.pointX - x)>DIS_SOLP || Math.abs(w.pointY-y)>DIS_SOLP){ addPoint2List(x,y); } }; } /** * 添加新的波浪 * @param x * @param y */ private void addPoint2List(int x, int y) { //创建了一个水波纹 Wave w = new Wave(); w.pointX = x; w.pointY=y; Paint pa=new Paint(); pa.setColor(colors[(int)(Math.random()*4)]); //设置抗锯齿 pa.setAntiAlias(true); //设置圆的样式-圆环的效果 pa.setStyle(Style.STROKE); w.paint = pa; //添加到列表中 wList.add(w); } private int [] colors = new int[]{Color.BLUE,Color.RED,Color.YELLOW,Color.GREEN}; /** * 刷新数据 */ private void flushData() { for (int i = 0; i < wList.size(); i++) { Wave w = wList.get(i); //如果透明度为 0 从集合中删除 int alpha = w.paint.getAlpha(); if(alpha == 0){ wList.remove(i); //删除i 以后,i的值应该再减1 否则会漏掉一个对象,不过,在此处影响不大,效果上看不出来。 continue; } alpha-=5; //屏蔽非法值 if(alpha<5){ alpha =0; } //降低透明度 w.paint.setAlpha(alpha); //扩大半径 w.radius = w.radius+3; //设置半径厚度 w.paint.setStrokeWidth(w.radius/3); } /* * 如果集合被清空,就停止刷新动画 */ if(wList.size() == 0){ isRunning = false; } } /** * 定义一个水波浪(圆环) * @author afu */ private class Wave { //圆心 int pointX; int pointY; //画笔 Paint paint; //半径 int radius; } }
相关推荐
"Android点击出现水波纹效果"就是一种常见的交互设计,它模仿了水面被触碰时产生的涟漪扩散效果,使得用户操作更加生动有趣。这个效果通常应用于按钮、列表项或其他可点击的UI元素上,以提示用户他们的点击已被系统...
在本项目中,我们关注的是"Unity3D水波纹效果",这通常涉及到游戏或模拟环境中水面的动态表现,使场景更具有真实感和互动性。 在Unity2018.3.0f2版本中,开发者可以利用内置的图形渲染工具和脚本系统来实现水波纹...
在本文中,我们将深入探讨如何在Flash平台使用ActionScript 3(AS3)实现逼真的水波纹效果。水波纹效果是一种常见的视觉特效,它能够为用户界面增添动态感和交互性,常用于游戏、网页动画或者应用程序的背景设计。AS...
本文将深入探讨“小程序版解压木鱼”这一话题,包括它的功能、实现原理以及电子木鱼与水波波纹效果的技术细节。 “解压木鱼”是一款以模拟传统木鱼敲击声效为主要内容的应用,旨在帮助用户缓解压力、集中注意力或...
【真实Flash水波纹效果】是一种在Flash平台上实现的视觉特效,它能够模拟水面波动的动态效果,使得用户在互动时能感受到逼真的水波荡漾。这种效果通常由ActionScript编程语言配合Flash图形和动画工具来创建,通过...
在本文中,我们将深入探讨如何使用three.js库创建一个基于Canvas的立体水波纹效果。three.js是一个流行的JavaScript 3D库,它使得在Web浏览器中进行三维图形编程变得简单。我们将讨论涉及到的关键技术和算法,以及...
Flex水波纹效果项目是一种基于Adobe Flex技术实现的动态视觉效果,主要应用于用户界面设计,为用户提供更加生动、直观的交互体验。Flex是基于ActionScript 3.0和MXML的开源框架,它允许开发者创建丰富的互联网应用...
在C#编程环境中,创建水波纹效果是一种常见的图形编程技术,主要应用于用户界面的动态效果展示或游戏设计。在VS2008(Visual Studio 2008)这个集成开发环境中,开发者可以利用GDI+(Graphics Device Interface Plus...
在Flash这个强大的动画创作工具中,制作水波纹效果是一项常见的技能,尤其对于网页互动设计、游戏开发或者教学演示来说,生动逼真的水波纹效果能够极大地提升用户体验。本教程将详细讲解如何在Flash中创建出这样的...
为了适应不同设备和屏幕尺寸,开发者可能还需要考虑响应式设计,确保水波纹效果在不同分辨率和比例的屏幕上都能正常工作。此外,优化性能也很重要,避免过多的重绘和回流,尤其是在处理大量用户交互时。 总的来说,...
在WPF(Windows Presentation Foundation)中,创建水波纹效果是一项常见的视觉特效任务,它可以为用户界面增添动态感和吸引力。这个"wpf水波纹效果"的代码资源显然是一个实现这种效果的示例,其中可能包含了一些...
"Android 仿猎豹水波纹效果"就是一个这样的例子,它通过模仿自然界中的水波动态,为用户带来生动而真实的交互体验。这一效果通常应用于触摸反馈或者加载动画等场景,使应用更加引人注目。 实现这种水波纹效果主要...
本文将深入探讨如何在Android中实现一个带有水波纹效果的自定义按钮。水波纹效果,也称为涟漪效果,通常用于触摸反馈,能为用户界面增添生动而现代的视觉体验。 首先,我们需要创建一个新的自定义按钮类,继承自`...
在本文中,我们将深入探讨如何使用ActionScript 3.0(AS3)在Flash CS3环境中实现图片的水波纹效果。水波纹效果是一种动态视觉特效,它可以使静态的图片看起来像是水面波动,增加了图像的生动性和动态感。这个效果在...
- **图形库**:开发者可以使用像OpenGL、DirectX或现代的跨平台库如Qt、Unity等,这些库提供了丰富的图形绘制和动画功能,能方便地创建出水波纹效果。 - **编程语言**:常见的编程语言如C++、C#、Java和Python都有...
react native 实现水波纹效果,效果非常棒哦
Android自定义View——贝塞尔曲线实现水波纹效果
标题中的“flash8做的水波纹效果”是指在Adobe Flash 8这个版本的软件中创建的一个特效,这个特效模拟了水面波动的视觉效果。Flash 8是Adobe公司发布的一款用于制作交互式矢量动画和多媒体内容的工具,它在当时被...
在Android开发中,水波纹效果(Ripple Effect)是一种常见的触摸反馈机制,自Android 5.0(Lollipop)引入以来,它为用户界面带来了更生动、更具沉浸感的交互体验。水波纹效果主要体现在按钮、图像、视图等元素上,...
本篇将深入探讨如何在Android应用中实现水波纹效果,主要分为两种方法:自定义View实现和使用系统自带的RippleDrawable。 首先,我们来看自定义View实现水波纹效果的方法。这通常涉及到对Canvas的深入理解和使用。...