首页
学习
活动
专区
圈层
工具
发布

Android OpenGL ES 实现动态(水波纹)涟漪效果

动态(水波纹)涟漪效果 1 水波纹效果原理 最近一个做视频滤镜的朋友,让我给他做一个动态水波纹效果,具体就是:点击屏幕上的某一位置,然后波纹以该位置为中心向周围扩散。...模拟物理世界中的水波纹 最后观察出,物理世界中水波纹的特点如上图所示,从水面的正上方往下看,在凹面上方观察到的是缩小效果,而在凸面上方观察到的是放大效果,然后整个水波纹效果就是放大和缩小效果的交叉排列...因此,我们得出结论,水波纹(涟漪)效果实际上就是一组组相互交替、幅度向外部逐渐减小的缩小放大效果组合。 本文将水波纹模型简化成一组放大和缩小效果随时间逐步向外部偏移。...水波纹效果原理如下图所示,我们以点击位置为中心,发生形变的区域是内圆和外圆之间的区域,以归一化时间变量 u_Time 大小为半径构建的圆(蓝色虚线)为边界,设定内侧是实现缩小效果的区域,外侧为实现放大效果的区域...2 水波纹效果实现 基于上节的原理分析,实现水波纹效果的主要原理就是实现一定区域内的缩小和放大效果,我们以平滑函数的输出值作为纹理采样坐标的偏移程度。

3.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android 水波纹效果的探究

    长按水波纹扩展效果 前言 水波纹效果从Android5.0就已经出来了,基本的使用相信大家都知道了,这里多谈一些相对深层次的使用: 1、基本使用 2、水波纹效果与布局绘制之间的问题 3、长按水波纹扩散效果...4、Button点击的水波纹效果 基本使用 系统自带水波纹实现方式 有界水波纹 android:background="?...android:attr/selectableItemBackgroundBorderless" 自定义水波纹实现方式 无界水波纹 水波纹 对比后,发现绿色的文字部分经过了二重绘制,因为布局的白色背景和文字自身颜色的原因。如果布局背景能去掉还能实现水波纹的效果就好了,这样就只有文字一层的颜色。...有两种方案可以达到想要的这种效果: 1、使用系统自带有界水波纹实现方式,因为系统本身的默认背景是透明色的。 android:background="?

    3K20

    Android:RippleDrawable 水波纹涟漪效果

    二、RippleDrawable基本概念介绍 (1)、RippleDrawable RippleDrawable可以实现上面效果图中的水波纹效果,它是在API 21 中添加的,所以,低于21的版本中不可使用...没有指定mask ,并且也没有指定radius 时,会以控件宽高中的较大值为直径绘制水波纹,这样就必然会超出控件的范围,所以,这种效果也叫做 无界水波纹效果。...指定mask 后 ,id 为 mask 的item 中指定的drawable 可以限定水波纹的范围。 三、代码示例: (1)、xml 中定义 ripple 下列代码依次对应效果图中的前6个。...--无界水波纹效果,所谓无界,实际是以空间宽度或高度中的大值作为直径绘制一个园--> <TextView android:layout_width...--有界水波纹效果。

    3.7K20

    使用Python实现水波纹效果:逼真的水波动画

    引言 水波纹效果是一种常见且迷人的视觉效果,广泛应用于游戏和图形设计中。在这篇博客中,我们将使用Python创建一个逼真的水波动画。...通过利用Pygame库和基于网格的算法,我们可以实现动态水波纹效果。 准备工作 前置条件 在开始之前,你需要确保你的系统已经安装了Pygame库。...代码实现与解析 导入必要的库 我们首先需要导入Pygame库和其他必要的模块: import pygame import numpy as np 初始化Pygame 我们需要初始化Pygame并设置屏幕的基本参数...: pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("水波纹效果") clock...# 初始化Pygame pygame.init() screen = pygame.display.set_mode((800, 600)) pygame.display.set_caption("水波纹效果

    1.2K10

    鸿蒙特效教程03-水波纹动画效果实现教程

    鸿蒙特效教程03-水波纹动画效果实现教程 本教程适合HarmonyOS初学者,通过简单到复杂的步骤,一步步实现漂亮的水波纹动画效果。...开发环境准备 DevEco Studio 5.0.3 HarmonyOS Next API 15 下载代码仓库 最终效果预览 我们将实现以下功能: 点击屏幕任意位置,在点击处生成一个水波纹 触摸并滑动屏幕...二、定义水波纹数据结构 在实现动画效果之前,我们需要先定义水波纹的数据结构。...、从清晰到透明的效果 使用[...this.ripples]创建数组的新实例,触发UI更新 当动画完成(步数达到总步数)或波纹被移除时,清除定时器 动画结束后从数组中移除该波纹,释放内存 至此,我们已经实现了基本的水波纹效果...使用 setInterval 定时器实现波纹扩散和消失的动画效果 添加 TouchEvent 触摸跟踪功能,让波纹能够跟随手指滑动 这个简单而美观的水波纹效果可以应用在你的应用中的各种交互场景,例如按钮点击

    1.1K00

    JavaScript之JS实现动画效果

    所以为了实现动画效果,我们必须创造出时间间隔来,而这正是实现动画效果的关键!所以我们来说下时间动画效果的第二个要素时间!  ...document.getElementsByName) return false; return true; }       上面这段代码完美的实现了我们想要实现的动画效果...,通过每次移动一点位置和setTimeout()函数配合,实现了这个效果,代码观察代码发现上面这段代码还可以优化,让它变得更加的通用!...上面这段代码实现的特效的是:当鼠标放到超链接上,就能以动画的效果显示对应的字母。...效果很酷,但是代码存在一点小瑕疵,这点我们经常容易忽视,问题就是,当我们把鼠标指针在链接之间快速的来回移动,动画效果将变得混乱起来。

    13.1K81

    JS实现焦点图轮播效果

    其原理是:第一张图片(5.jpg)和最后一张图片(1.jpg)的作用是为了实现无限滚动的效果,因为此效果是通过设置id为list的div容器的left值来实现图片切换的,所以当轮播到第五张图片(5.jpg...由于最后一张图片就是第一张图片(1.jpg),所以用户肉眼看上去没有什么变化,就这样实现了无限滚动的效果,其他同理!...好了,最重要的还是JS实现轮播效果: 首先来实现最简单的通过左右按钮来实现切换: window.onload = function () { var container = document.getElementById...,之前已经实现的效果是直接切换,而我们想要的是能够平滑过渡,体验会好一些。...最后实现自动播放效果,当鼠标不点击时,它能自动播放,这里用到setInterval定时器,每次3秒执行一次点击事件,而当鼠标移上去的时候清除该事件,离开的时候又自动播放。

    19.3K61
    领券