-
2021-11-23 17:14:24
水波纹效果从Android5.0就已经出来了,基本的使用相信大家都知道了、就不再叙述了!以下记录两个常用的水波纹效果;
有界水波纹(系统自带)
android:background="?android:attr/selectableItemBackground"
无界水波纹
一般解释:以控件宽高中最大的数值作为水波纹效果所在正方形的边界进行绘制、其实和上面的没多大区别;
android:background="?android:attr/selectableItemBackgroundBorderless"
示例代码:layout= activity_main
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/flContainer" android:layout_height="match_parent" android:background="?android:attr/selectableItemBackground" tools:context=".MainActivity"> </FrameLayout>
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) flContainer.setOnClickListener { } } }
别忘记一定要写onClickListener 事件
更多相关内容 -
css3+js实现水波纹效果
2022-03-28 20:04:41css3+js实现水波纹效果,跟随点击位置为中心扩散,效果很不错,适用于主流浏览器。 -
Android中Item实现点击水波纹效果
2021-01-05 04:07:26水波纹效果大致上可以分为两类,一类是有界水波纹,而另一类是无界水波纹,较为广泛使用的是有界水波纹。 系统自带的水波纹实现 系统自带的方法非常方便,只需要给相应的空间设置背景,背景内容则为系统自带的 ... -
Android实现点击Button产生水波纹效果
2020-09-02 23:04:42主要介绍了Android实现点击Button产生水波纹效果,需要的朋友可以参考下 -
WaterRipple:使用Qt小部件在可选图像上播放水波纹效果的动画
2021-02-05 19:38:21WaterRipple:使用Qt小部件在可选图像上播放水波纹效果的动画 -
正弦实现水波纹效果
2017-08-22 15:47:38简单方便实现多条水波纹动态效果 -
react native 实现水波纹效果
2018-05-29 15:24:43react native 实现水波纹效果,效果非常棒哦 -
C语言实现水波纹效果
2020-12-31 04:56:06本文实例为大家分享了C语言实现水波纹效果的具体代码,供大家参考,具体内容如下 #include #include #include #define PIC_HEIGHT 600 #define PIC_WIDTH 800 void FrameFun(); // 帧逻辑函数,处理每一帧的... -
Android实现简单水波纹效果
2021-01-21 19:58:05本文为大家分享了Android实现水波纹效果展示的具体代码,供大家参考,具体内容如下 一、效果 二、实现原理 自定义view,使用Path和贝塞尔曲线绘制,然后不断刷新,并且改变X、Y的值 主要知识点rQuadTo的使用 三、... -
基于canvas使用three.js制作的立体水波纹效果
2018-04-08 15:13:27使用three.js绘制的具有立体感的水波面效果,里面涉及很多算法,没有思路的同学可以借鉴一下。 -
水波纹效果
2018-02-05 20:07:40基于微软 wpf 3D helix toolkit 制作的水波纹效果 -
水波纹效果Shader
2018-12-22 15:41:30水波纹效果,点击出现一圈圈水面波纹,使用shader编写 -
使用CSS实现逼真的水波纹点击效果
2020-12-03 05:16:05答案就是用“叠”的方式,这个水波纹效果的原理其实就是用六个div叠在一起,接着最重要的就是将背景设为固定:background-attachment:fixed;,然后让背景的尺寸有大有小,就可以完成了,只要把六个div叠在一起,... -
Flutter InkWell水波纹效果
2019-10-26 08:55:46Flutter InkWell水波纹效果。 -
CSS实现水波纹效果
2022-02-10 11:45:54CSS实现水波纹效果 记录如下以供以后使用 效果图如下 代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ...CSS实现水波纹效果
记录如下以供以后使用
效果图如下
代码如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .app { width: 100%; height: 800px; background-color: #262c50; position: relative; overflow: hidden; } .china-map{width:1000px;height:620px;background:url('./map_black_bg.png') center no-repeat;position:relative;margin: 0 auto;} .region-list{position:relative;left:0;top:0} @-webkit-keyframes warn{ 0%{-webkit-transform:scale(0);transform:scale(0);opacity:1} 100%{-webkit-transform:scale(1);transform:scale(1);opacity:0} } @-moz-keyframes warn{ 0%{-moz-transform:scale(0);transform:scale(0);opacity:1} 100%{-moz-transform:scale(1);transform:scale(1);opacity:0} } @-o-keyframes warn{ 0%{-o-transform:scale(0);transform:scale(0);opacity:1} 100%{-o-transform:scale(1);transform:scale(1);opacity:0} } @keyframes warn{ 0%{-webkit-transform:scale(0);-moz-transform:scale(0);-o-transform:scale(0);transform:scale(0);opacity:1} 100%{-webkit-transform:scale(1);-moz-transform:scale(1);-o-transform:scale(1);transform:scale(1);opacity:0} } .area-box .dot{position:absolute;left:0;width:10px;height:10px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;background:#a2a9b4;opacity:1;filter:alpha(opacity=100)} .area-box .pulse{position:absolute;top:-28px;left:-28px;height:66px;width:66px;border:2px solid #b7b7b7;-webkit-border-radius:48px;-moz-border-radius:48px;border-radius:48px;-webkit-box-shadow:0 0 4px #82878f,0 0 10px #82878f inset;-moz-box-shadow:0 0 4px #82878f,0 0 10px #82878f inset;box-shadow:0 0 4px #82878f,0 0 10px #82878f inset;opacity:.12;filter:alpha(opacity=0);-webkit-animation:warn 2s ease-out both;-moz-animation:warn 2s ease-out both;-o-animation:warn 2s ease-out both;animation:warn 2s ease-out both;-webkit-animation-iteration-count:infinite;-moz-animation-iteration-count:infinite;-o-animation-iteration-count:infinite;animation-iteration-count:infinite;background:0 0} .area-box .delay-01{-webkit-animation-delay:0;-moz-animation-delay:0;-o-animation-delay:0;animation-delay:0} .area-box .delay-02{-webkit-animation-delay:.4s;-moz-animation-delay:.4s;-o-animation-delay:.4s;animation-delay:.4s} .area-box .delay-03{-webkit-animation-delay:.8s;-moz-animation-delay:.8s;-o-animation-delay:.8s;animation-delay:.8s} .area-box .delay-04{-webkit-animation-delay:1.2s;-moz-animation-delay:1.2s;-o-animation-delay:1.2s;animation-delay:1.2s} .area-box .delay-05{-webkit-animation-delay:1.6s;-moz-animation-delay:1.6s;-o-animation-delay:1.6s;animation-delay:1.6s} .area-box .delay-06{-webkit-animation-delay:2s;-moz-animation-delay:2s;-o-animation-delay:2s;animation-delay:2s} .area-box .delay-07{-webkit-animation-delay:2.4s;-moz-animation-delay:2.4s;-o-animation-delay:2.4s;animation-delay:2.4s} .area-box .delay-08{-webkit-animation-delay:-.4s;-moz-animation-delay:-.4s;-o-animation-delay:-.4s;animation-delay:-.4s} .area-box .delay-09{-webkit-animation-delay:-.8s;-moz-animation-delay:-.8s;-o-animation-delay:-.8s;animation-delay:-.8s} .area-box .delay-10{-webkit-animation-delay:-1.2s;-moz-animation-delay:-1.2s;-o-animation-delay:-1.2s;animation-delay:-1.2s} .area-box .delay-11{-webkit-animation-delay:4s;-moz-animation-delay:4s;-o-animation-delay:4s;animation-delay:4s} .region-list.active .area-box .dot{background:#009fd9} .region-list.active .area-box .pulse{border-color:#009fd9;top:-41px;left:-41px;height:88px;width:88px;-webkit-box-shadow:0 0 12px #0080d9,0 0 20px #0080d9 inset;-moz-box-shadow:0 0 12px #0080d9,0 0 20px #0080d9 inset;box-shadow:0 0 12px #0080d9,0 0 20px #0080d9 inset} .region-list.waite .area-box .dot{background:#f90} .region-list.waite .area-box .pulse{border-color:#f90;top:-41px;left:-41px;height:88px;width:88px;-webkit-box-shadow:0 0 12px #f90,0 0 20px #f90 inset;-moz-box-shadow:0 0 12px #f90,0 0 20px #f90 inset;box-shadow:0 0 12px #f90,0 0 20px #f90 inset} .show-regin{position:absolute;left:2px;height:0;top:0;width:11px;opacity:0;-o-transition:all .5s ease-in-out;-webkit-transition:all .5s ease-in-out;-moz-transition:all .5s ease-in-out;transition:all .5s ease-in-out} .online-node .show-regin,.region-list:hover .show-regin,.underline-node .show-regin,.waite-node .show-regin{height:127px;opacity:1} .show-regin span{width:80px;position:absolute;left:8px;top:-11px;padding:6px 10px;font-size:14px;color:#ccc;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;text-align:center;white-space:nowrap;} .postition-10 .show-regin span{left:0} .postition-6 .show-regin span{left:-72px} .area-box{z-index:77} .show-regin{z-index:66} .region-list.active .show-regin span{position:relative;color:#ccc} .region-list.waite .show-regin span{position:relative;color:#ccc} .postition-4{left:68%;top:38%} .postition-4.region-list.active .area-box .pulse{top:-50px;left:-50px;width:110px;height:110px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%} .postition-7.region-list.active .area-box .pulse{top:-50px;left:-50px;width:110px;height:110px;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%} .postition-8{left:66%;top:84%} .postition-9{left:77%;top:61%} .postition-11{left:70%;top:48%} .solution-header-1 { max-width: 1210px; margin-left: auto; margin-right: auto; text-align: center; } .solution-header-1 h2 { margin-bottom: 10px; font-size: 36px; line-height: 46px; text-align: center; color: #FAFBFE; font-weight: inherit; } .solution-header-1 p { font-size: 18px; line-height: 22px; text-align: center; color: #FFFFFF; opacity: 0.6; } @-webkit-keyframes bgScroll { from { -webkit-transform: translateY(0); transform: translateY(0) } to { -webkit-transform: translateY(-33.333%); transform: translateY(-33.333%) } } @keyframes bgScroll { from { -webkit-transform: translateY(0); transform: translateY(0) } to { -webkit-transform: translateY(-33.333%); transform: translateY(-33.333%) } } </style> </head> <body> <div class="app"> <div class="solution-header-1" > <h2>纯CSS实现水波纹效果</h2> <p>纯CSS实现水波纹效果</p> </div> <div style="text-align: center"> <div class="china-map"> <div class="region-list waite postition-4 waite-node"> <div class="area-box"> <span class="dot"></span> <span class="pulse delay-01"></span> <span class="pulse delay-02"></span> <span class="pulse delay-03"></span> </div> <div class="show-regin"> <span>北京</span> </div> </div> <div class="region-list active postition-11 online-node"> <div class="area-box"> <span class="dot"></span> <span class="pulse delay-06"></span> <span class="pulse delay-05"></span> <span class="pulse delay-04"></span> </div> <div class="show-regin"> <span>山东</span> </div> </div> <div class="region-list active postition-8 online-node"> <div class="area-box"> <span class="dot"></span> <span class="pulse delay-06"></span> <span class="pulse delay-05"></span> <span class="pulse delay-04"></span> </div> <div class="show-regin"> <span>广州</span> </div> </div> <div class="region-list active postition-9 online-node"> <div class="area-box"> <span class="dot"></span> <span class="pulse delay-06"></span> <span class="pulse delay-05"></span> <span class="pulse delay-04"></span> </div> <div class="show-regin"> <span>上海</span> </div> </div> </div> </div> </div> </body> </html>
背景图
2、另在网上找到另一种效果实现
(1)效果图
(2)代码如下
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>水波纹效果</title> <style> * { margin: 0; padding: 0; } html, body { height: 100%; overflow: hidden; } @-webkit-keyframes wateranimate { 0% { -webkit-transform: scale(0); opacity: 0.5; } 100% { -webkit-transform: scale(2); opacity: 0; } } @keyframes wateranimate { 0% { -webkit-transform: scale(0); transform: scale(0); opacity: 0.5; } 100% { -webkit-transform: scale(2); transform: scale(2); opacity: 0; } } .container { position: relative; width: 500px; height: 500px; margin: 50px auto; border: 1px solid yellow; } .water1 { -webkit-animation: wateranimate 12s 9s ease-out infinite; animation: wateranimate 12s 9s ease-out infinite; } .water2 { -webkit-animation: wateranimate 12s 6s ease-out infinite; animation: wateranimate 12s 6s ease-out infinite; } .water3 { -webkit-animation: wateranimate 12s 3s ease-out infinite; animation: wateranimate 12s 3s ease-out infinite; } .water4 { -webkit-animation: wateranimate 12s 0s ease-out infinite; animation: wateranimate 12s 0s ease-out infinite; } .water1, .water2, .water3, .water4 { padding: 20%; position: absolute; left: 30%; top: 30%; border: 1px solid pink; box-shadow: 0 0 120px 30px rgba(235, 31, 137, 1) inset; border-radius: 100%; z-index: 1; opacity: 0; } </style> </head> <body> <div class="container"> <div class="water1"></div> <div class="water2"></div> <div class="water3"></div> <div class="water4"></div> </div> </body> </html>
-
Android实现水波纹点击效果
2021-01-04 01:06:14Android实现水波纹点击效果只... 圆角背景的水波纹效果(如上图) 1. 定义一个普通圆角背景的xml; rounded_corners.xml <?xml version=1.0 encoding=utf-8?> android:shape=rectangle> <corners andro -
基于JS+Canves实现点击按钮水波纹效果
2020-11-23 16:27:53近来看到个不错的按钮点击效果,当点击时产生一次水波涟漪效果,挺好玩的,于是简单的实现了下(没考虑低版本浏览器兼容问题) 先看看效果吧,如下图(录制gif软件有点渣,看起来卡卡的…) 这种效果可以由元素内嵌套... -
Android水波纹效果
2022-05-10 18:20:32Android水波纹加载效果日常的Android开发中可能大家都见过类似这种水波纹展开的效果,比如加载一张图片的时候使用水波纹加载,其实这种实现非常简单。因为Google已经为我们提供了一个非常方便地工具类
ViewAnimationUtils
它的实现非常简单,就这个类,其中有个方法如下
createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius)
该方法的作用就是实例化一个RevealAnimator,该Animator包含了水波纹效果的属性设置。其中的5个参数非常好理解,含义如下:
view——为水波纹效果关联的视图
centerX——水波纹扩散的中心点x坐标
centerY——水波纹扩散的中心点y坐标
startRadius——水波纹扩散前的初始半径
endRadius——水波纹扩散后的结束半径
该方法的强大之处就在于你可以结合动画的加速器和持续时间来自定义效果,此外水波纹的起始扩展位置也是可以非常灵活地定制的。
核心代码其实非常简单,下面的代码实现了整体布局从左上角水波纹展开的效果+图片点击从中间水波纹展开的效果
class TestMDAnimActivity : AppCompatActivity() { private lateinit var mClyContainer: ConstraintLayout private lateinit var mImgBg: AppCompatImageView override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_test_mdanim) initWidgets() addListeners() } private fun initWidgets() { mClyContainer = findViewById(R.id.cly_container) mImgBg = findViewById(R.id.img_bg) mClyContainer.post { // 这两个动画只有前面的可以执行,所以采用该方式想实现两个水波纹碰撞效果是不可行的 val anim2 = ViewAnimationUtils.createCircularReveal( mClyContainer, resources.displayMetrics.widthPixels, resources.displayMetrics.heightPixels, 10F, 2000F ) val anim1 = ViewAnimationUtils.createCircularReveal( mClyContainer, 100, 100, 10F, 2000F ) val animSet = AnimatorSet().apply { duration = 1000 interpolator = AccelerateDecelerateInterpolator() playTogether(anim1, anim2) start() } } } private fun addListeners() { mImgBg.setOnClickListener { ViewAnimationUtils.createCircularReveal( mImgBg, it.width / 2, it.height / 2, 10F, 2000F ).apply { duration = 1000 interpolator = AccelerateDecelerateInterpolator() start() } } } }
-
Unity Shader实现水波纹效果
2020-08-19 06:02:50主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
按钮点击水波纹效果
2016-01-04 15:04:23百度手机卫士或者360手机卫士,里面的按钮点击效果都是这样的,我们自己实现一个layout,在layout中捕捉事件,并对事件进行相应的处理,在down事件中寻找当前用户点击的是哪个view,找出view所在的矩形区域,将一个... -
Android开发中的水波纹效果实现
2017-06-14 10:27:04Android开发中的水波纹效果实现,详细了解请移步:http://blog.csdn.net/zxc514257857/article/details/73200900 -
通过drawBitmapMesh 实现水波纹效果.zip
2019-09-24 03:27:48通过drawBitmapMesh 实现水波纹效果.zip,模拟真实的水波效应。 -
RecyclerView实现水波纹点击效果
2020-08-26 09:27:52主要为大家详细介绍了RecyclerView实现水波纹点击效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
Android 按钮实现按压水波纹效果
2021-08-16 20:53:54selectableItemBackground" 即可实现水波纹的效果。 但是这需要在API23 也就是说需要在Android6.0系统的手机上面,才会有效果。 方法二: 给Button按钮设置背景 <?xml version="1.0" encoding="utf-8"?> <...博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,
👉点击跳转到网站方法一:
在控件中加入
android:foreground="?selectableItemBackground"
即可实现水波纹的效果。
但是这需要在API23 也就是说需要在Android6.0系统的手机上面,才会有效果。方法二:
给Button按钮设置背景
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".RippleActivity"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/ripple" android:layout_marginRight="10dp" android:layout_marginLeft="10dp" android:layout_marginTop="10dp" android:text="水波纹效果" android:textSize="20sp" android:textColor="@color/white" /> </LinearLayout>
在drawable文件中设置ripple.xml
用水波纹标签 设置水波纹的颜色,和Button按钮的样式:<?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="#ffffff" > <item android:drawable="@drawable/btn_ripple"/> </ripple>
其中btn_ripple.xml属性如下:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <solid android:color="#11EA09"/> <corners android:radius="25dp"/> </shape>
我水波纹按压颜色设置的是白色,这样能看的更直观。
效果如图所示:
-
Android点击水波纹扩散效果整理(附带一个自定义的水波纹效果控件)
2020-07-01 09:36:52水波纹效果分为两种:有界水波纹和无界水波纹。都通过系统自带的动画文件实现。 有界水波纹: 有界水波纹通过系统自带的动画文件selectableItemBackground实现只要将其设置为控件的背景即可。简单写几句代码: ...