点击时扩散效果

 
<
style> p { margin: 0; position: relative; padding: 60px 30px; background-color: orange; color: #fff; width: 200px; overflow: hidden; text-align: center; border: 20px solid #000; } i { position: absolute; width: 520px; height: 520px; border-radius: 50%; } </style> <p><i></i></p> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <script> (function() { var key = true; $("p").click(function(event) { var e = event || window.event; if (key) { key = false; var scale = 0; var a = 0.8; var timer = setInterval(function() { if (scale >= 1 || a <= 0) { scale = 0; a = 0.8; clearInterval(timer); key = true; } $("i").css({ "left": e.pageX - 8 - 20, "top": e.pageY - 8 - 20, "transform": "translate(-50%,-50%) scale(" + scale + ")", "background-color": "rgba(225,225,225," + a + ")" }); scale += 0.01; a -= 0.008; }, 10) } }) }()) </script>

 

转载于:https://www.cnblogs.com/lprosper/p/9805275.html

### Android Ripple 动画效果实现 在 Android 中,`Ripple Effect` 是一种常见的交互反馈方式,通常用于按钮或其他可点视图上。这种效果可以通过 `Material Design` 提供的支持库轻松实现。 #### 使用 XML 定义 Ripple 效果 最简单的方式是在 XML 文件中定义 Ripple 动画效果。可以创建一个自定义的 drawable 资源文件来描述 Ripple 的行为: ```xml <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?attr/colorControlHighlight"> <!-- 设置高亮颜色 --> <item> <shape android:shape="rectangle"> <solid android:color="@android:color/transparent" /> <!-- 基础背景透明 --> </shape> </item> </ripple> ``` 上述代码片段定义了一个基本的 Ripple 效果[^1]。其中,`?attr/colorControlHighlight` 表示默认的主题高亮颜色,开发者也可以替换为其他具体的颜色值。 #### 将 Ripple 应用到 View 上 一旦定义好 Ripple Drawable,就可以将其设置为目标控件的背景资源。例如,在布局文件中应用如下配置: ```xml <Button android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" android:background="@drawable/ripple_effect"/> <!-- 引入上面定义的 ripple --> ``` 这样当用户点该 Button ,就会显示 Ripple 扩散动画效果[^2]。 #### 动态触发动画 (通过 onTouchListener) 如果需要更复杂的控制逻辑或者动态调整参数,则可以在 Java 或 Kotlin 代码里手动处理触摸事件并启动 Ripple 动画。比如监听用户的按压动作并通过 MaterialRippleLayout 来管理整个过程: ```java myButton.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_DOWN){ ((MaterialRippleLayout)v).showRipple(true); // 显示涟漪效果 }else{ ((MaterialRippleLayout)v).hideRipple(); // 隐藏涟漪效果 } return false; } }); ``` 此段代码展示了如何捕捉手指按下 (`ACTION_DOWN`) 和抬起的动作,并分别调用 `showRipple()` 和 `hideRipple()` 方法完成动画展示与隐藏的操作。 #### 注意事项 为了确保最佳用户体验,请注意以下几点: - **API Level**: RippleDrawable 只支持 API level 21及以上版本。对于较低版本的应用程序,可能需要用到第三方库或兼容方案。 - **性能优化**: 如果页面中有大量同存在的 Ripples ,可能会引起帧率下降等问题;因此建议合理限制其数量以及范围大小。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值