首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

水波扩散效果(shader)

水波扩散是一个比较好看的交互效果,特别是在某些以水为故事发生场景的游戏中,扩散水波会让场景更加栩栩如生 ?...掏空式往外涌 但是水波往外扩散是呼吸灯式的一波波往外涌,而且不是这种无尽式的一直把东西往外掏的感觉,所以我们要给cc_time.x加上一个周期性的变化,让它能表现出这种周期性的往外扩散的感觉。...周期性往外涌 这种呼吸灯式的涌动其实和我们的最终效果有很大区别,因为它永远在循环涌动,但是我们的水波是从中心扩散出去之后,中间部分就不再动了的,怎么让中间的像素不再多次涌动呢?...如果把一圈水波比作圆,那水波扩散行为其实就是这个圆的半径在不断的增大,圆外面的波纹有效,圆里面的波纹静止。...因此我们可以多加一个距离取样,像素离扩散中心的距离大于半径才保留否则丢弃,而这个半径从零开始逐渐增大。

2.2K20

Android 5.0 实现水波扩散效果

本文实例为大家分享了Android 5.0 实现水波扩散效果的具体代码,供大家参考,具体内容如下 该效果是通过自定义界面来实现的 1、首先自定义属性,attrs.xml代码如下: <?...2、自定义RippleView类继承RelativeLayout布局,也可以由需求所定继承于其它类,实现水波扩散效果主要的有两点:水波扩散的绘制和动画 1)水波的绘制其实就是绘制一个圆形 canvas.drawCircle...private float mMaskAlpha;// 遮掩透明度 private float mRippleAlpha;// 水波透明度 private int mRippleTime;// 水波动画时间...private ObjectAnimator mRippleAnim;// 显示水波动画 private float mRadius;// 当前的半径 private float mMaxRadius...;// 水波最大半径 private float mDownX; // 记录手指按下的位置 private float mDownY; private boolean mIsMask; private

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

Android水波动画帮助类,一行代码实现View显示隐藏startActivity特效(0.3.1)

首先来看一个UI动图。 动来自Dribbble 效果图是是Dribbble上看到的,原作品在此。 我所实现的效果如下: Watch on YouTube ?...,如下: CircularAnim.hide(mChangeBtn).go(); 同理,让按钮伸展开: CircularAnim.show(mChangeBtn).go(); 以View为水波触发点收缩其它...int maxRadius = (int) Math.sqrt(w * w + h * h) + 1; // 若未设置时长,则以PERFECT_MILLS为基准根据水波扩散的距离来计算实际时间...,速度应随最大边距的变小而越慢,扩散时间应随最大边距的变小而变小,因此比率应在 @rate 与 1 之间。...final long finalDuration = mDurationMills; // 由于thisActivity.startActivity()会有所停顿,所以进入的水波动画应比退出的水波动画时间短才能保持视觉上的一致

96720

如何实现一个丝滑的点击水波效果

Varlet组件库提供了一个使元素点击时生成水波扩散效果的指令: 点击 图片 接下来就从源码角度看看它是如何实现的...this.appendChild(ripple) // 20ms后修改水波元素的样式,达到水波扩散动画效果 window.setTimeout(() => { ripple.style.transform...因为水波元素为被点击元素的子元素,所以这些坐标都是相对于被点击元素的左上角坐标计算的: 从绿色的圆过渡成红色的圆,透明度、大小、位置的变化就是水波扩散效果。...setTimeout(task, 60) : task() } 先回顾一下创建水波的各个阶段的耗时,当我们第一次点击元素时,等待60ms后会创建水波元素,然后再等待20ms后会开始进行水波扩散效果,动画耗时...还剩下的时间,因为前面提到了水波从创建到扩散完成整个过程大概耗时20ms + 200ms = 220ms,所以延迟dealy时间,也就是等待水波动画完成后再让水波消失,避免水波还未扩散完成就消失的情况,

56320

Android 水波纹效果的探究

长按水波纹扩展效果 前言 水波纹效果从Android5.0就已经出来了,基本的使用相信大家都知道了,这里多谈一些相对深层次的使用: 1、基本使用 2、水波纹效果与布局绘制之间的问题 3、长按水波扩散效果...4、Button点击的水波纹效果 基本使用 系统自带水波纹实现方式 有界水波纹 android:background="?...image.png 长按水波扩散效果 ? 长按水波纹扩展效果 在使用小红书时,我们可以看到关于“笔记”的item长按会展示扩散的效果,其实原理也很简单。...无边界的水波纹可以达到长按扩散的效果,只是它会超出边界,那我们就在对应的父布局加一层有边界的水波纹背景即可。...参考资料 Ripple 水波纹效果 聊聊Android5.0中的水波纹效果 解决点击ripple水波纹无效的问题 UI之修改Button颜色保持默认点击效果

2.3K20

1、创建RippleView.class, 继承与View

PS:自定义view篇-水波纹实现 效果:水波扩散 场景:雷达、按钮点击效果、搜索等 实现:先上效果图,之前记得支付宝有一个咻一咻,当时就是水波纹效果,实现起来一共两步,第一画内圆,第二画多个外圆...,越大扩散越慢 private List spreadRadius = new ArrayList();//扩散圆层级数,元素为扩散的距离 private List...centerPaint.setColor(centerColor);      //消除锯齿 centerPaint.setAntiAlias(true); //水波扩散...spreadPaint.setStyle(Paint.Style.STROKE); spreadPaint.setAlpha(255); //初始化第一个水波纹...  centerX = w / 2;    centerY = h / 2;   }  2、开始绘制onDraw()   我们已经做了好前奏,剩下的就开始绘制了,首先我们要确定几个圆才能形成水波纹效果

56310

【Flutter 专题】133 图解自定义 ACEWaterButton 水波纹按钮

和尚想自定义一个水波纹按钮,即默认向外扩散水波样式;实现方式有很多种,和尚尝试最基本的 AnimationController 逐层绘制来处理,和尚简单记录一下尝试过程; ACEWaterButton...和尚画了一个简单的图如下,预期的水波纹按钮包括两层,以中心圆(蓝色)为基础逐步向外围扩散至(绿色),并循环重复; 1....水波纹 和尚预想实现水波纹效果则必然离不开 Animation 动画,使用动画方式也有多种,可以继承 AnimatedWidget 也可以使用 AnimationController 自定义动画样式...; 和尚预期水波纹不仅范围逐渐变大,并且在扩散过程中透明度逐渐降低,至外围最大范围为止消失;和尚采用最基本的 CustomPainter 自定义 Canvas.drawCircle,根据时间进度来逐层绘制水波纹...暂时先不缺省,因为和尚在设置水波扩散过程中,同时设置了透明度的渐变,若缺省内置圆会影响 innerIcon 的展示效果;但内置圆绘制位置可以调整,也可以在 ACEWaterPainter 中进行绘制;

77530

水波模拟算法

一、理论依据 水波的物理学模型便是理论依据。水波有如下特性: 扩散水波总是从被扰动的中心向外扩散。在水波扩散过程中每个点都在得到能量后以自己为中心震动,并向四周传播能量。...之所以从干扰点向外扩散,是因为内部的各点能量互相抵消而看不到震荡。重要的是,每个点都在以自己为中心进行震荡,并向四周扩散能量。 衰减:水波在传播过程中能量会逐渐的衰减,因为水的震荡是有阻尼的。...反射:由于水波表面的凹凸不平,比起平静时期的水面,水面上各点反光程度将会不同程度的受到影响,从而改变了自己的亮度,颜色。 水波还有衍射等特性。但是考虑问题的核心在于能量传递或者能量扩散。...从而,虽着实间的推移,能量就会被扩散开来。 为了保证执行效率,水波扩散、折射等均用简化后的模型代替,以使算法成为线性简单的;对于里面的乘法、除法运算尽量采用2的幂,可以通过移位运算快速实现。...即x0在下一个时刻的振幅要由自身的当前振幅和受周围12个点的能量扩散得到。并且假设这12个点影响x0的程度都一样,这个模型已经得到很大的简化。

1.3K90

Qt编写自定义控件63-水波效果

前阵子一个好友-离心泵(QQ:33522)恰巧写了个,我在他的基础上改进了一些功能,增加了一些接口设置,比如提供参数可以控制水波的消失速度,扩散的速度,水波的面积大小以及水波的深度等。...二、实现的功能 1:可设置显示的图像 2:可设置衰减系数,控制消失速度,值越小水波消失越快 3:可设置折射系数,控制扩散速度,值越大水波扩散越快 4:可设置石头大小,控制水波面积,值越大水波面积越大 5...* 2:可设置衰减系数,控制消失速度,值越小水波消失越快 * 3:可设置折射系数,控制扩散速度,值越大水波扩散越快 * 4:可设置石头大小,控制水波面积,值越大水波面积越大 * 5:可设置石头重量...鼠标按下出的坐标 QTimer *timer; //定时器绘制 private slots: //执行计算位图进行绘制 void drawImage(); //水波步进扩散...= 1; h < imageHeight - 1; h++) { for(int w = 1; w < imageWidth - 1; w++) { //波能扩散

87120

Vue组件设计 | 实现水波涟漪效果的点击反馈指令

当用户点击时,会以点击中心为圆心产生一个水波扩散的涟漪效果,适用各个场景,美观又不浮夸,关键是可以给用户带来很直观的反馈。...定制一个水波纹默认样式 水波纹实际上就是通过用户点击的位置生成一个小圆圈,并且尺寸逐渐扩大到整个被点击元素的一个过程,所以这里先制定一个水波基本的样式,并设置好过度动画,过度动画应该是一个先慢后快的一个过程...然后我们需要在鼠标按下时创建水波,监听鼠标按下的事件,这里以pc端为例子,刚创建水波时使用transform缩小到0.3,这是作者尝试过相对合适的创建大小, 然后修改transform触发过度水波扩散动画...ripples.length) { return } const lastRipple = ripples[ripples.length - 1] // 通过水波的创建时间计算出扩散动画还需要执行多久...,确保每一个水波都完整的执行了扩散动画 const delay = 300 - performance.now() + Number(lastRipple.dataset.createdAt)

76930

Android 5.0 Button 按钮水纹效果的适配问题

这样就没有效果,按钮会变成默认的灰色状态,点击按钮也不会有颜色的状态区别 为了兼容5.0以下的设备,我们可以利用seletor(勘误:button用theme在5.0以下也是有按压变色的,虽然没有水波纹...xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/deep_green">//这里是扩散水波纹的色值...xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/deep_green">//这里是扩散水波纹的色值...xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/deep_green">//这里是扩散水波纹的色值...xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/deep_green">//这里是扩散水波纹的色值

1.2K30

手撕一个让人「欲罢不能」的水波纹选中控件

但是系统自带的水波纹效果只是一个短暂的点击响应过程,也就是最后水波纹消失了。 如果要让水波扩散后保持住,比如实现一个水波纹选中效果,就无法实现了。 原生的水波纹效果就不说了,相信大家都会。...实现水波纹选中效果 需要哪些工具 开始之前,来看看整个定制过程需要用到哪些工具: 继承自FrameLayout 或 View Paint:画笔工具 Scroller:实现水波扩散或者收缩动画 Path...shrinkRipple() } } return super.onTouchEvent(event) } // 扩散水波纹...触发水波纹绘制动画 首先看下触发水波扩散的方法: class RippleLayoutKtl: FrameLayout { // .........简单说一下收缩 水波纹 的过程: 在水波纹 已经展开 ,或者在 扩散的过程中 ,用户再次点击了控件,这时候,需要把水波纹 收缩回来 。

1.1K40
领券