高阶自定义View

阅读: 评论:0

高阶自定义View

高阶自定义View

目录

  • 高阶自定义View --- 粒子变幻、隧道散列、组合文字
    • 效果视频 & 图片
    • 概述
    • 原理及其难点
    • 部分代码简述
    • 源码地址

高阶自定义View --- 粒子变幻、隧道散列、组合文字

作者:林冠宏 / 指尖下的幽灵

掘金:

博客:/

GitHub : /

联系方式 / Contact:913337456@qq


----- 效果视频 & 图片

----- 概述

----- 原理及其难点

----- 部分代码简述

----- 源码地址

效果视频 & 图片

第一个视频,无散列

第二个视频,具备散列


概述

跟随早前开源的 XView () 项目,本次在原基础上添加了 粒子变幻 自定义View。目前我在代码里面的设置它可以做到:

1,根据你输入文字,将被粒子组合而成。
2,粒子流具备多种属性,目前我拓展了缩放圆形与矩形墙壁碰撞,等等。
3,粒子每个互不影响,可以分批设置粒子特性,视频中就有 方形 和 圆形
4,所有的半径,坐标什么的参数都是可自定义的。
5,因为锚边是根据 bitmap 而来的,也就是说,你可以输入图片,然后由粒子组合
6,XView 项目早前已经开源了碰撞球,可以加入粒子相互碰撞

原理及其难点

1,根据 bitmap 找出文字或图像的边。这步骤要减少 o(n)

2,根据边路径,进行粒子填充

3,变幻算法,例如运动中的缩放

4,高效率的刷新,摒弃 View,采用 SurfaceView

部分代码简述

调用

// 粒子变幻
particleView.setConfigAndRefreshView(new ParticleView.Config().setCanvasWidth(// 设置画布宽度getWindowManager().getDefaultDisplay().getWidth()).setCanvasHeight(800) // 设置画布高度.setParticleRefreshTime(50) // 设置每帧刷新间隔.set_x_Step(15) // 设置 x 轴每次取像素点的间隔.set_y_Step(19) // 设置  轴每次取像素点的间隔.setParticleCallBack(new ParticleView.ParticleCallBack() {@Overridepublic ParticleView.Particle setParticle(ParticleView.Particle p, int index, int x, int y) {p.setX(x); // 设置获取回来的 x 为该 粒子的x坐标p.setY(y); // 设置获取回来的 y 为该 粒子的y坐标p.setIsZoom(true);  // 设置当前颗粒子是否启动缩放p.setRadiusMax(12); // 设置当前颗粒子最大的缩放半径p.setRadius(12);    // 设置当前颗粒子默认的半径/** 下面的 %3 是我演示 分批次 显示不同效果而设置 **/if(index % 3==0){p.setRectParticle(true); // 这个粒子是 正方形 的p.setIsHash(  // 设置它是否是散列的,即是随机移动true,new Random().nextInt(30)-15, // x 速率new Random().nextInt(30)-15  // y 速率);}return p; // 返回这个粒子}@Overridepublic boolean drawText(Bitmap bg,Canvas c) {/** 这里就是我们要自定义显示任意文字的地方 */MainActivity.this.drawText(bg,c,s);return true; /** 告诉它不要使用默认的 txt */}})
);

源码地址

转载于:.html

本文发布于:2024-01-27 23:27:26,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/17063692483283.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:自定义   高阶   View
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23