当前位置: 首页 > news >正文

Android 两种方式实现类似水波扩散效果

两种方式实现类似水波扩散效果,(相比较而言,自定义view的效果更好点,动画实现起来更方便点。)

  1. 自定义view实现
  2. 动画实现

自定义view实现

思路分析:通过canvas画圆,每次改变圆半径和透明度,当半径达到一定程度,再次从中心开始绘圆,达到不同层级的效果,通过不断绘制达到view扩散效果

private Paint centerPaint; //中心圆paint
private int radius = 100; //中心圆半径
private Paint spreadPaint; //扩散圆paint
private float centerX;//圆心x
private float centerY;//圆心y
private int distance = 5; //每次圆递增间距
private int maxRadius = 80; //最大圆半径
private int delayMilliseconds = 33;//扩散延迟间隔,越大扩散越慢
private List<Integer> spreadRadius = new ArrayList<>();//扩散圆层级数,元素为扩散的距离
private List<Integer> alphas = new ArrayList<>();//对应每层圆的透明度

style文件里自定义属性

<declare-styleable name="SpreadView"><!--中心圆颜色--><attr name="spread_center_color" format="color" /><!--中心圆半径--><attr name="spread_radius" format="integer" /><!--扩散圆颜色--><attr name="spread_spread_color" format="color" /><!--扩散间距--><attr name="spread_distance" format="integer" /><!--扩散最大半径--><attr name="spread_max_radius" format="integer" /><!--扩散延迟间隔--><attr name="spread_delay_milliseconds" format="integer" />
</declare-styleable>

初始化

public SpreadView(Context context) {t

http://www.mrgr.cn/news/57935.html

相关文章:

  • 基于深度学习的图像修复系统设计与实现(PyQt5、CodeFormer ffhq-dataset数据集)
  • Linux系列-权限
  • Redis——缓存
  • redis的配置文件解析
  • 一文1800字从0到1浅谈web性能测试!
  • 软件开发术语(E开头)---持续更新
  • Shell编程-小结
  • Python os模块详解
  • RabbitMQ常见问题持续汇总
  • AI带货主播如何打造真实视觉效果!
  • Solon Ioc 的魔法 - 注解注入器(也可叫虚空注入器)
  • 力扣之613.直线上的最近距离
  • 宠物空气净化器怎么买最划算?宠物空气净化器选购经验真实分享!
  • js逆向协议破解滑块验证
  • 【Blender】 学习笔记(一)
  • 笨蛋学习FreeMarker
  • Leecode热题100-416.分割等和子集
  • 6317A可调谐激光源
  • 草地杂草数据集野外草地数据集田间野草数据集YOLO格式VOC格式目标检测计算机视觉数据集
  • 【数据分享】全国各省份资源和环境-废气中主要污染物排放(2011-2021年)
  • AcWing 3534:矩阵幂 ← 矩阵快速幂
  • 中国建设银行广东省分行珠海市分行营业网点装修工程采购项目市场调研供应商征集公告
  • 1024程序员节
  • 二进制安全研究员的成长之路---栈溢出篇(一)
  • 【蓝桥杯选拔赛真题77】python计算小球 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析
  • 时间服务器 NTP协议