RippleButton.gif 基本思路是自定义控件继承至Button,记录手势抬起坐标,利用RadialGradient实现效果 private P...
mask 直译过来有遮罩的意思,它会限定水波纹的范围。...没有指定mask ,并且也没有指定radius 时,会以控件宽高中的较大值为直径绘制水波纹,这样就必然会超出控件的范围,所以,这种效果也叫做 无界水波纹效果。...--无界水波纹效果,所谓无界,实际是以空间宽度或高度中的大值作为直径绘制一个园--> <TextView android:layout_width...--有界水波纹效果。...水波纹效果只在控件内绘制--> <TextView android:layout_width="match_parent"
长按水波纹扩展效果 前言 水波纹效果从Android5.0就已经出来了,基本的使用相信大家都知道了,这里多谈一些相对深层次的使用: 1、基本使用 2、水波纹效果与布局绘制之间的问题 3、长按水波纹扩散效果...4、Button点击的水波纹效果 基本使用 系统自带水波纹实现方式 有界水波纹 android:background="?...android:attr/selectableItemBackground" 无界水波纹 以控件宽高中最大的数值作为水波纹效果所在正方形的边界进行绘制 android:background="?...image.png 长按水波纹扩散效果 ? 长按水波纹扩展效果 在使用小红书时,我们可以看到关于“笔记”的item长按会展示扩散的效果,其实原理也很简单。...无边界的水波纹可以达到长按扩散的效果,只是它会超出边界,那我们就在对应的父布局加一层有边界的水波纹背景即可。
确认需求 首先还是老套路,先确定一下需求,捋一下思路,然后才好写代码: 1.首先要有一个圆2.这个圆会边扩散边消失3.当这个圆扩散到一定程度的时候再绘制一个圆4.有限循环 / 无限循环5.可以有 / 无...这个圆会边扩散边消失 一边扩散,一边消失。 没错,这里也是使用这种 evaluate 来计算大小和透明度。...> 来控制每一个「会扩散消失的圆」。...这里主要就是控制显示几次,毕竟有的需求不是一直显示波纹效果。...这样一个有水波纹扩散效果的 Widget 就封装完成了。
">//这里是扩散水波纹的色值 android:drawable="@color/green" /> 有个问题需要注意,如果的想要你的波纹没有按压的时候为透明状态...">//这里是扩散水波纹的色值 android:drawable="@android:color/transparent" />//这里你用透明色和透明的图片都是没有效果的 //这里是扩散水波纹的色值 android:id="@android:id/mask" android:drawable="@color/white" />里面的色值可以任选一个... android:id=”@android:id/mask”会让系统并不会真的绘制,并告知波纹的绘制边界 如果写成下面,波纹的绘制范围会超出控件的边界 //这里是扩散水波纹的色值 如上,这样设置后5.0以下的设备具有按钮按下变色的效果,5.0以上就具有水波纹效果.其他控件同理 后续: Material Design Button
实现方法是结合贝塞尔曲线和Xfermode,核心是利用path的offset()方法,不断偏移path /** * 水波纹进度条 */ public class BezierProgressView...int width, height; float centerX, centerY; //背景圆的缓冲 private Bitmap roundBitmap; //需要和水波纹做...wavePath = new Path(); private LinearGradient linearGradient; private float offset = 0; //水波纹速度...private void drawWave(Canvas canvas) { float ratio = 1 - progress / maxProgress; //水波纹
我们在使用Button时,默认点击会带有一个水波纹扩散的效果,如果我们想要使用自己的颜色,那怎么办呢,今天就来介绍二种实现自定义颜色水波纹的方法 方法一:使用drawable 在drawable-v21...> android="http://schemas.android.com/apk/res/android" android:color="@color/colorPrimaryDark..."> android:drawable="@color/colorPrimary" /> 使用该方法时,在安卓5.0以下系统中会崩溃,因为5.0以下不支持水波纹效果...> android="http://schemas.android.com/apk/res/android"> android:drawable="@...android:layout_width="wrap_content" android:layout_height="wrap_content" android
5.0引入了很多动画效果,是谷歌提供的自带的效果,其中触摸反馈就是一种,简而言之就是点击水波纹效果,Button就默认带有水波纹效果 ?...attr/selectableItemBackground"--和Button一样的效果(扩散时有边界,边界就是View的宽高) 2.android:background="?...attr/selectableItemBackgroundBorderless"--扩散不含边界 两种值的效果如下: ?...我们还可以改变水波纹的形状,需要在drawable自定义水波纹效果的xml,这边用了默认的安卓机器人启动图标 android="http://schemas.android.com/apk/res/android" android:color="@color/colorPrimaryDark
PS:自定义view篇-水波纹实现 效果:水波纹扩散 场景:雷达、按钮点击效果、搜索等 实现:先上效果图,之前记得支付宝有一个咻一咻,当时就是水波纹效果,实现起来一共两步,第一画内圆,第二画多个外圆...typedArray.getColor(R.styleable.SpreadView_spread_center_color, ContextCompat.getColor(context, android.R.color.holo_red_light...centerPaint.setColor(centerColor); //消除锯齿 centerPaint.setAntiAlias(true); //水波纹扩散...spreadPaint.setStyle(Paint.Style.STROKE); spreadPaint.setAlpha(255); //初始化第一个水波纹... centerX = w / 2; centerY = h / 2; } 2、开始绘制onDraw() 我们已经做了好前奏,剩下的就开始绘制了,首先我们要确定几个圆才能形成水波纹效果
本文介绍的是Android5.0中其中一个炫酷的效果,点击水波纹扩散效果(Ripple Effect)....而大家想兼容低系统版本的话,就需要新建v21(即Android5.0)的Resource Directory. 第一步:在drawable下建立一个xml,为水波纹的背景 menu.xml: android="http://schemas.android.com/apk/res/android" android:shape="rectangle">...android:color="@color/white" /> 第二步:在drawable-v21文件夹下建立一个ripple的xml,为水波纹的实现文件,其中android:color="@color/darkgray">为水波纹的颜色,item则与上面的xml同样即可 menu_bg.xml: <?
动态(水波纹)涟漪效果 1 水波纹效果原理 最近一个做视频滤镜的朋友,让我给他做一个动态水波纹效果,具体就是:点击屏幕上的某一位置,然后波纹以该位置为中心向周围扩散。...模拟物理世界中的水波纹 最后观察出,物理世界中水波纹的特点如上图所示,从水面的正上方往下看,在凹面上方观察到的是缩小效果,而在凸面上方观察到的是放大效果,然后整个水波纹效果就是放大和缩小效果的交叉排列...因此,我们得出结论,水波纹(涟漪)效果实际上就是一组组相互交替、幅度向外部逐渐减小的缩小放大效果组合。 本文将水波纹模型简化成一组放大和缩小效果随时间逐步向外部偏移。...水波纹模型原理 发生形变区域的宽度为固定值 2*u_Boundary ,然后这个形变区域随着 u_Time 的变大逐步向外侧移动,最后就形成了动态的水波纹效果。...2 水波纹效果实现 基于上节的原理分析,实现水波纹效果的主要原理就是实现一定区域内的缩小和放大效果,我们以平滑函数的输出值作为纹理采样坐标的偏移程度。
Android 应用,并且想为其加入一些视觉效果,那么动态水波纹可能是一个不错的选择。...而今天,我们将介绍一个很棒的库 MultiWaveHeader,它能帮助你轻松实现水波纹效果,并且支持高度自定义,能够适应不同的设计需求。 什么是 MultiWaveHeader?...:id="@+id/waveHeader" android:layout_width="match_parent" android:layout_height="200dp" android...波形方向控制: 顶部方向水波:水波从顶部向下移动,表现为从顶部开始逐渐扩散。 底部方向水波:水波从底部向上移动,表现为从底部开始逐渐扩散。...如果你想要在应用中加入动态的水波纹效果,并希望拥有高度的自定义功能,MultiWaveHeader 是一个不容错过的工具。
一、前言 在 Android 5.0 以后,随着 Material Design 的提出,Android UI 设计语言可谓是提升了一大步,但是在国内其实并没有得到很大的推广应用。...原生的水波纹 我们知道在 Android 5.0 以后,要实现水波纹的效果点击效果很简单,只需配置 ripple 的 drawable 就可以了。...但是系统自带的水波纹效果只是一个短暂的点击响应过程,也就是最后水波纹消失了。 如果要让水波纹扩散后保持住,比如实现一个水波纹选中效果,就无法实现了。 原生的水波纹效果就不说了,相信大家都会。...触发水波纹绘制动画 首先看下触发水波纹扩散的方法: class RippleLayoutKtl: FrameLayout { // .........简单说一下收缩 水波纹 的过程: 在水波纹 已经展开 ,或者在 扩散的过程中 ,用户再次点击了控件,这时候,需要把水波纹 收缩回来 。
/details/52540251 无意间发现一个问题,在使用 22.2.0 的 design 库时,FloatingActionButton 默认点击时产生水波纹的点击效果...,但是我使用最新版 24.2.0 的 design 库时,它默认点击没有水波纹效果,而且不响应 app:pressedTranslationZ="xxdp" 这个属性。...如果想实现 22.2.0 版本默认的效果,需要加上一个属性: android:clickable="true" 来让它拥有默认点击产生水波纹。...PS: design 库的两个版本的引用方式: // 22.2.0 compile 'com.android.support:design:22.2.0' // 24.2.0 compile 'com.android.support
今天我们看一下RippleEffect水波纹点击效果,先上图: image.png 大家可以看到按钮或者布局点击的时候会有水波涟漪的效果,很不错,用到你的app上一定会很高大上的。...android:actionBarSize" android:layout_height="?...android:actionBarSize" android:layout_height="?...android:actionBarSize" android:src="@android:drawable/ic_menu_edit" android:layout_centerInParent...="true" android:padding="10dp" android:background="@android:color/holo_blue_dark"/>
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> ...
和尚想自定义一个水波纹按钮,即默认向外扩散的水波样式;实现方式有很多种,和尚尝试最基本的 AnimationController 逐层绘制来处理,和尚简单记录一下尝试过程; ACEWaterButton...和尚画了一个简单的图如下,预期的水波纹按钮包括两层,以中心圆(蓝色)为基础逐步向外围扩散至(绿色),并循环重复; 1....水波纹 和尚预想实现水波纹效果则必然离不开 Animation 动画,使用动画方式也有多种,可以继承 AnimatedWidget 也可以使用 AnimationController 自定义动画样式...; 和尚预期水波纹不仅范围逐渐变大,并且在扩散过程中透明度逐渐降低,至外围最大范围为止消失;和尚采用最基本的 CustomPainter 自定义 Canvas.drawCircle,根据时间进度来逐层绘制水波纹...暂时先不缺省,因为和尚在设置水波纹扩散过程中,同时设置了透明度的渐变,若缺省内置圆会影响 innerIcon 的展示效果;但内置圆绘制位置可以调整,也可以在 ACEWaterPainter 中进行绘制;
首先,我们知道波纹会从中间扩散开来,且会有多个波纹叠加在一起,之后扩散开来的大小可以随机生成来拟真。 所以我们需要定义纹波圈层数以及波纹的最小最大尺寸,以及波纹的颜色等数据。...理一下思路,首先新生成的波纹当然是要在之前波纹的上层产生叠加效果,之后给定随机范围内的波纹大小让其生成,并且往波纹数据里push一个新的波纹配置对象。...,当用户点击时候,将调用这个方法创建一个波纹。...,兼容ie11及以上 @keyframes wave { to { //波纹逐渐扩散变大变透明 transform: scale(1);...,兼容ie11及以上 @keyframes wave { to { //波纹逐渐扩散变大变透明 transform: scale(1);
先写一个控件 <CheckBox android:text="同意服务协议" android:layout_width="wrap_content" android...:text="同意服务协议" android:layout_width="wrap_content" android:layout_height="wrap_content...去除选中时的水波纹效果其实一行代码就搞定了,就是把背景值为透明即可,@android:color/transparent 修改布局文件: <CheckBox android:layout_width...="wrap_content" android:layout_height="wrap_content" android:background="@android:color.../transparent" android:text="同意服务协议" android:theme="@style/MyCheckBox" /> 这时你再运行起来就可以了
IconData _getIconData(TargetPlatform platform) { switch (platform) { case TargetPlatform.android...对我个人来说,水波纹能给用户一个交互的反馈,本身是比较好的,但一个小小的图标按钮有水波纹,感觉怪怪的。...这不得不让图标按钮的占位区域扩大,当多个 IconButton 排列时,如下所示,默认情况下,水波纹区域太大,又会显得拥挤: 不过可以通过 splashRadius 来控制水波纹的扩散半径。...但在小区域中,当长按时展示水波扩散的动画效果时,手指几乎占据了整个区域,所以整个动画效果呈现的收益并不明显。...Material2 的好看一些,对于 IconButton 而言,会根据图标颜色显示背景色,长按时也不再是扩散的水波纹,而是背景色的变化。
领取专属 10元无门槛券
手把手带您无忧上云