首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android OpenGL ES 实现动态(水波纹)涟漪效果

模拟物理世界中的水波纹 最后观察出,物理世界中水波纹的特点如上图所示,从水面的正上方往下看,在凹面上方观察到的是缩小效果,而在凸面上方观察到的是放大效果,然后整个水波纹效果就是放大和缩小效果的交叉排列...因此,我们得出结论,水波纹(涟漪)效果实际上就是一组组相互交替、幅度向外部逐渐减小的缩小放大效果组合。 本文将水波纹模型简化成一组放大和缩小效果随时间逐步向外部偏移。...水波纹效果原理如下图所示,我们以点击位置为中心,发生形变的区域是内圆和外之间的区域,以归一化时间变量 u_Time 大小为半径构建的(蓝色虚线)为边界,设定内侧是实现缩小效果的区域,外侧为实现放大效果的区域...当平滑函数输出正值时,采样坐标向外侧偏移,呈现缩小效果,而平滑函数输出负值时,采样坐标向内侧偏移,呈现放大效果。...texCoord - touchXY);//单位方向向量 texCoord = texCoord + (unitDirectionVec * moveDis);//采样坐标偏移(实现放大和缩小效果

2.1K20

Flutter 动画之 Animation

1.2:Animation和Animation体系一览 整个Flutter的Animation相比Android还是比较简单的 1.3:介绍今天的主角nStarPath 我们通过变动这个函数中的参数让路径动态变化实现动画.../// 可以创建一个外接半径为[R],内接半径半径为[r]的[num]角星路径 Path nStarPath(int num, double R, double r) { Path path...[R],内接半径半径为[r]的[num]角星, Path nStarPath(int num, double R, double r) { Path path = new Path(); double...的动画之旅 2.Flutter动画基本使用 这里再贴一下这张Animation使用图: 2.1:动画的基本使用:Tween+AnimationController 1.让_AnimPageState...body: CustomPaint( painter: AnimView(_star), 复制代码 2.3:动态更新 只需要在刷新的时候更改五角星的属性就行了,下面就是外接半径25~

2K20
您找到你想要的搜索结果了吗?
是的
没有找到

一篇文章带你了解SVG 图标

一、SVG图标的优势 图标使用SVG的优点: 1、可以轻松地按比例放大和缩小图标,具体取决于要在应用程序中显示的位置以及显示应用程序的屏幕尺寸。...但是,在显示SVG图标时,使用HTML的img元素来显示图标是最容易的,HTML img元素可以轻松地放大和缩小SVG图标的大小。...要放大或缩小SVG图标的大小,只需使用CSS width或height样式属性。...但是,当使用img元素显示此SVG图标,并放大和缩小img元素的大小时,SVG图标不会放大或缩小。相反,或多或少会显示SVG画布。 下面是将img CSS Height属性设置为32。...该区域从点0,0延伸到点128,128(半径为64,以64,64为中心)。使用SVG Viewbox属性,可以指定只渲染SVG画布的这一区域。 下面是设置了Viewbox值的SVG图标的外观。

4.2K30

Flutter自定义view —— 闯关进度条

实现思路: 看到这个布局,其实挺简单的,无非是画个画条直线,唯一一个困难点在于它的排列,说白了就是计算坐标 每个图形放置的位置,需要动态计算出来。...因为需要计算当前关卡,并改换其它画笔,并且 因为半径不同,后续的坐标需要重新计算。 2....//画圆 /* * Offset c, 圆心坐标 * double radius, 半径 * Paint paint 画笔 */ canvas.drawCircle( Offset...至于画笔画布的使用就不过多的解释了具体看这里:Flutter 自定义 View 介绍 class CustomView extends StatefulWidget { @override CustomViewState...2.还要在最外面设置size大小,size 大小也是动态计算的,计算出整个控件的宽度,高度可以定死 ---------- 有啥不明白的随时联系我,稍后我会上传github,如果能帮助到你,麻烦点个赞

92530

Flutter终将逆袭!1.2版本发布,或将统一江湖

今天在巴塞罗那召开的 MWC 发布会上,Google 正式发布了 Flutter 跨平台 UI 框架的 1.2 版本。...这种格式有助于缩小应用程序的大小,并支持Android应用程序的动态交付等新功能。 支持Dart 2.2 SDK 此版本包括Dart 2.2 SDK,该SDK也于昨天发布。...虽然 Flutter 一直专注于移动,但该团队最近也开始讨论使用该框架构建桌面应用程序。为此,在 1.2 版本中引入了全新的键盘事件和鼠标悬停支持。...Flutter的插件团队为Flutter 1.2添加了一些更改,可以很好地支持In App Purchases插件。除了这些更新,他们还为视频播放器,webview和地图修复了一些错误。...现在开始玩Flutter的好处呢, 我认为有如下几点: 如果我们以后想在Google的新系统上跑程序的话, 用Flutter来编写是一定没错的.

1.2K20

这里有一份史上最详细仿QQ未读消息拖拽粘性效果的实现,快来收藏!

半径也是根据某一比例系数扩大或缩小,当超过临界点的时候起始消失,只剩手指所在位置的,然后手指松开消失。...根据上面的分析我们得出绘制步骤: 1、在指定位置绘制起始中间可以带数字) 2、使用贝塞尔曲线绘制两之间的连接带 3、处理onTouchEvent事件(down、move、up) 4、添加一些动画特效...; //起始位置点 private PointF pointStart; //拖拽位置点 private PointF pointEnd; //根据滑动位置动态改变圆的半径...两个我们知道怎么画的了,现在就来分析一下连接带的实现,可以看到是两段平滑的过渡,这样的弧度使用贝塞尔再好不过了,我们在简单回顾一下贝塞尔曲线的样子 ?...float percent = distance / maxDistance; //之所以*0.6和0.2只为了设置拖拽过程变化的过大和过小这个系数是多次尝试的出的

63510

Flutter使用Canvas实现精美表盘效果

,于是趁着周末空闲时间使用 Flutter 的 Canvas 使用了一个同样的效果。...最终实现的效果还不错,如下: 实现 前面说到使用 Canvas 实现该表盘效果,而在 Flutter使用 Canvas 更多的则是继承 CustomPainter 类实现 paint 方法,然后在...为了方便后续使用长、宽、半径等长度,创建对应的成员变量,同时为了适配不同表盘宽高,保证展示效果一致,在绘制时不直接使用数值,而使用比例长度: /// 画布宽度 late double width; //...角度计算对了以后,还需要刷新整个表盘,即每秒钟刷新一次,刷新时获取当前时间重新绘制时针、分针、秒针的位置,实现动态效果,这里使用 Timer 每一秒钟调用父布局的 setState 实现。...源码地址:flutter_dial[1] References [1] flutter_dial: https://github.com/loongwind/flutter_dial

1.3K30

Flutter第2天--Animation动画+粒子运动

pager包 主页面内容用AnimaPage,虽然暂时还不知道StatefulWidget是什么,反正按照套路出牌就行了 仿照初始项目的套路写,这里绘图区自定义AnimaView,打算对五角星的外接半径...) => _AnimaPageState(); } class _AnimaPageState extends State{ double _R = 25;//五角星的外接半径...:是级联运算,相当于再使用此对象,这里..也就代表animation....controller.forward(); } }); ---- 3.其他效果 自己玩玩吧,随便改些属性 星与芒 星扩动 星与芒:固定五角星内接半径...,外接半径变大,角数变多,颜色变红 星扩动:五角星内接半径为外接一半,外接半径变大,角数变多,颜色变红 好了,预热完了,下面进入正题 ---- 四、粒子运动 无论什么语言只有能模拟时间流就可以有粒子动画

2.4K20

地图投影

什么是地图投影 我们的地球是的,而我们的纸张是平面。为了将地球绘制在平面纸张上,我们需要将地球表面投影到平面上。地图投影的实质是建立空间地理坐标和平面直角坐标关系的过程。...,经线为半径,且经线间的夹角等于地球面上相应的经差) 此外,还有伪圆锥投影,伪圆柱投影,伪方位投影,多圆锥投影等 ?...1:100万地形图采用兰伯特Lambert投影(正轴等角割圆锥投影),其分幅原则与国际地理学会规定的全球统一使用的国际百万分之一地图投影保持一致。...Landsat卫星影像使用该投影。...Google地图和百度地图使用的墨卡托投影(正轴等角圆柱投影),但是这种网络地图使用的墨卡托投影和常规的墨卡托投影稍微有一些区别:在网络地图中将地球抽象为球体而不是椭球体,这样的墨卡托投影称为Web Mercator

1.3K10

Web墨卡托公开的小秘密

墨卡托投影在今天对于地图展示仍起着极为重要的作用,目前世界各国绘制海洋地图时仍广泛使用墨卡托投影.我们平时看到的谷歌地图,百度地图,包括我们的高德地图,都是使用的墨卡托投影....Web墨卡托是Google Map在电子地图中所创造并使用地图投影方法,常被称作Web Mercator或Spherical Mercator,它与常规墨卡托投影的主要区别在于把地球模拟为球体而非椭球体...可视化伪墨卡托投影…… 因为这个坐标系统是 Google Map 最先使用的,或者更确切地说,是Google 最先发明的。...在投影过程中,将表示地球的参考椭球体近似的作为正球体处理(正球体半径 R = 椭球体半长轴 a)。...下面一张在 EPSG 官网上找到的3857坐标的具体参数介绍,供参考: Web Mercator 的阴暗面 Web Mercator 无论是来自Google程序员的谬误,还是为了简化换算的有意为之

2.5K10

使用bokeh-scala进行数据可视化(2)

目录 前言 几种高级可视化图表 总结 一、前言        之前已经简单介绍过一次如何使用Bokeh-scala进行数据可视化(见使用bokeh-scala进行数据可视化),以及如何在Geotrellis...中进行分布式下的空间数据可视化(见geotrellis使用(十五)使用Bokeh进行栅格数据可视化统计),但是之前介绍的只是简单的线、圆圈等可视化方式,本文位大家介绍几种高级的可视化图表。...,outer_radius为外半径,start_angle为起始角度,end_angle为结束角度,direction为圆弧的方向。...text_x就是根据每一个角度计算cos值并乘以外半径,text_y就是根据每一个角度计算sin值并乘以外半径,最终并为text对象赋一个角度angle。...当然其地图采用了Google地图,所以你可能需要做些其他操作(Over wall)才能看到。

2.1K70

史上最详细仿QQ未读消息拖拽粘性效果的实现

半径也是根据某一比例系数扩大或缩小,当超过临界点的时候起始消失,只剩手指所在位置的,然后手指松开消失。...根据上面的分析我们得出绘制步骤: 1、在指定位置绘制起始中间可以带数字) 2、使用贝塞尔曲线绘制两之间的连接带 3、处理onTouchEvent事件(down、move、up) 4、添加一些动画特效...; //起始位置点 private PointF pointStart; //拖拽位置点 private PointF pointEnd; //根据滑动位置动态改变圆的半径...大概是这样的效果 两个我们知道怎么画的了,现在就来分析一下连接带的实现,可以看到是两段平滑的过渡,这样的弧度使用贝塞尔再好不过了,我们在简单回顾一下贝塞尔曲线的样子 ?...float percent = distance / maxDistance; //之所以*0.6和0.2只为了设置拖拽过程变化的过大和过小这个系数是多次尝试的出的

79420

如何实现超萌动感小炸弹?

聪明的你一定会说太简单了,这不就是一个然后再用DashPathEffect实现缺口不就可以了!!嗯,对,就是这样的。直接代码: ? 简单!简单的不能再简单了,下面看身体 3 .身体 ?...简单的不太再简单了,4个半径从大到小画,中间然后挖空。so easy!! ? 到这里,我们已经完成了一半,那就是小炸弹的显示,现在到了动画的时间了!再次出场 ?...11 脸部上下移动 首先和脸部左右移动一样,使用matrix.translate进行上下移动。眼睛的变换也一样。后面的眼睛放大效果,就是在变成的眼睛的时候,放大圆的半径。 嘴巴的变换就相对比较复杂!...其实就是一个金色的实心,然后一个红色的边框,中间白色,三个按不同的速率和极限做放大缩小动画 (这里原设计还加入了变色的功能,金色会变色,可以用ArgbEvaluator实现)。 ?...13 爆炸动画 和引线动画类型,4个做放大缩小动画,只是到一定的大小后,然后小漏空,并且漏空逐渐放大。 14 结语 好了,我们的超萌动感小炸弹到这里就结束了。

77040

AutoCAD工程制图 常见命令与注意事项全总结(120例)

23.命令(C),默认输入半径,可以点击右下角输入直径,只能标注直径不能标注半径。 24.绘图时以定位线为标准画圆。技巧,剪断链接部分后点击删除 25.内功能,切点切点半径。...或使用圆角(F)功能,右下角点击半径并输入后点击两个*(圆角只能是外切关系)。 26.直线打断功能(BR)。 27.线型CENTER,标准定位线的线型。标注时只能从定位线端点开始标注。...55.拉伸(S):相同外观,如长度或宽度不一样,可以使用拉伸完成,不用多次绘制。 56.使用拉伸时,必须要以框选,不能直接去点或者全选。...60.比例1以上是放大,比例1以下是缩小。 61.更快的方法,注释里有圆心标记,如果不明显,可以使用缩放命令(SC)(可以保证超出的部分一样。) 62.凡是有孔的地方都要做定位线。...102.样建模(可用多个截图混合形成实体) 103.圆角的妙用,可以对3D实体操作。 104.同一平面上两条线样可以形成一个面,不同平面上两条线样可以形成一个体。

1.2K10
领券