android波纹效果弹窗,Android自定义View实现波纹效果

Android自定义View实现波纹效果

时间:2017-05-27     来源:移动互联网学院

1、引言:随着Android智能手机的普及,Android应用得到了大力支持,而Android应用的市场前景也是非常的强势。在Android应用的实际开发中,很多时候还会遇到相对比较复杂的需求,而且现在很多APP应用为了赢取更多用户的关注,不仅在用户交互体验上多做文章,还在页面效果上下了不少功夫,使用自定义View实现各种炫丽的效果,也是吸引用户的一种法宝。前一段时间,在手机上发现很多APP具有水波纹般效果。心血来潮想来自己试试,学习试做了一个用自定义View实现标准正余弦波纹给大家分享一下。

2、效果如下:

7b6d49301800f4f6895764c432a859bb.png

dd6ce01b9a1e0a1933e9458ff19a372e.png

3、需关注方法:

1)onMeasure():先回调,用于控件的测量;

2)onSizeChanged():在onMeasure后面回调,可以拿到view的宽高等数据,在横竖屏切换时也会回调;

3)onDraw():绘制波纹;

4、这种水波纹可以用具体函数模拟出具体的轨迹,然后不断刷新绘制,形成动态的波纹,所以思路基本如下:

① 确定水波纹的函数方程

② 根据函数方程得出每一个波纹上点的坐标;

③ 将水波进行平移,即将水波上的点不断的移动;

④ 不断的重新绘制,不断刷新,生成动态水波纹;

5、根据上面的思路,我们进行实现:

1)正余弦函数方程为:y = Asin(wx+b)+h

这个公式在高中相信大家都学过,函数里:w决定周期,A决定振幅,h决定y位置,b为初相;根据上面的方程选取自己觉得中意的波纹效果,确定对应参数的取值;然后根据确定好的方程得出所有的方程上y的数值,并将所有y值保存在数组里:

5e31618b53002d6f2dc1398386abe84b.png

2)根据得出的所有y值,则可以在onDraw中通过如下代码绘制两条静态波纹:

df729b9093f3fce3a68dd34758e15579.png

3)这种方式类似于数学里面的细分法,一条波纹,如果横向以一个像素点为单位进行细分,则形成view总宽度条直线,并且每条直线的起点和终点我们都能知道,在此基础上我们只需要循环绘制出所有细分出来的直线(直线都是纵向的)或看成是无数个点连接形成了一条静态的水波纹。之后改变两条波纹的起始点,呈现动态,当波纹移动到结尾处,重新记录并绘制,这样就会产生循环波纹的效果。

4)接下来我们让水波纹动起来,之前用了一个数组保存了所有的y值点,有两条水波纹,再利用两个同样大小的数组来保存两条波纹的y值数据,并不断的去改变这两个数组中的数据:

0a625b2eb908f451d401c45590bb8242.png

5)除此之外,为了让波纹在不同分辨率上的移动速度基本一致,又编写了一个UIUtil类,编写方法,将dip转换为px单位。

f8b5ec8653555ce6aa0549791e8c1fca.png

至此,动态的正余弦波纹效果就呈现出来。

6、效果思路总结,我们将函数确定后,通过循环将左边的点开始进行正余弦函数的往复上下移动,从而达到一种波纹状视觉体验,移动的幅度,也就是波纹的高低,全部通过一个数组存储正余弦函数生成的值,而这种往复运动也只需要不断的改变这个数组的数据,再通过OnDraw方法不断刷新,即可生成动态水波纹。刷新可以调用invalidate()或postInvalidate(),区别在于后者可以在子线程中更新UI,更方便。

7、代码整合如下:

1)UiUtil类,其中方法将dip单位转为px单位,是为让了能够控制波纹在任何分辨率都能尽量统一速度。

7347d7f8772212ecc55655063bca7c8e.png

2)自定义波纹View中代码:

c112dc193198b949ad5ae502d36bcc49.png

4198254ebc4c43643f3cb56d005fbecd.png

9931d74d262bc75436196620777a5d41.png

2e242c04dd1032b5edc709083d8dbd8b.png

1ce399e1baebd07f7bde635a9e75dc5d.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 构建前端 页面继承及共享 - 转

http://blog.csdn.net/youzhouliu/article/details/52181549转载于:https://www.cnblogs.com/wag-tail-118/articles/8564522.html

android service onlowmemory,Android乱弹onLowMemory()和onTrimMemory()

今天看郭哥的LitePal框架的源码,刚打开LitePalApplication里面的源码看到了这样一幕Overridepublic void onLowMemory() {super.onLowMemory();mContext getApplicationContext();}不太懂郭哥的意思.之前依稀记得有人说起onLowMemory()和onTrimMemory(),于是乎,我就去查了查源…

图像滤镜艺术---Oilpaint油画滤镜

图像滤镜艺术---Oilpaint油画滤镜 原文:图像滤镜艺术---Oilpaint油画滤镜Oilpaint油画滤镜 图像油画效果实际上是将图像边缘产生一种朦胧,雾化的效果,同时,将一定的边缘模糊化,这样图像整体上看去像素与像素之间就像雾一样随机呈现…

vs2019创建android,Visual Studio 2019编写的安卓程序,生成失败

下载实例不改动任何能够编译成功,稍加改动无法编译成功。布局代码:xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"vertical"android:layout_width"fill_parent"android:layout_height&q…

android来电事件,android – 来电时没有响铃事件

我不知道问题出在哪里.监听器没有捕获到铃声事件(所以我可以决定接受还是拒绝来电).在清单中是这样的:在主要活动onCreate是这样的:IntentFilter filter new IntentFilter();filter.addAction("android.SipDemo.INCOMING_CALL");callReceiver…

转:数据库收缩

1. 数据库的相关属性 在MS中创建数据库时会为数据库分配初始的大小(如下图:数据库和日志两个文件),随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式: 自动增长:在自动增长中可以设置每次的…

python操作excel常用的方法

读操作模块安装  pip install xlrd 写操作模块安装  pip install xlwt xlrd读操作 1、打开excel   xl xlrd.open_workbook(test.xls) 2、通过索引获取工作表   table xl.sheet()[0] #有多个sheet,获取第一个sheet 3、获取第一行的内容   row table.row…

懒加载与预加载

前端性能优化中图片资源的优化。 1.懒加载(延迟加载) 1.图片进入可视区域之后请求图片资源; 2.对于电商等图片较多,页面很长的业务场景很适用; 3.可以减少无效资源的加载; 4.并发加载的资源过多会阻塞js的加…

8.使用Exists监控ZNode的三大Change事件

一、 zookeeper是一个分布式的协调程序(所有程序都是通过订阅它来相互感知)1. tcp(长链接) watcherserver -》clientclient -》server2. Driver 中的方法 exists() 监控一个znode的 CURD 的操作。client1 client2 同时订阅 baidu…

广东 职称英语计算机,现在评职称英语和计算机都不用考了

技校网专门为您推荐的类似问题答案问题1:通过出版职业资格考试中级考试,评职称需要职称英语和计算机条件不跟随 已跟随 取消 确定 1、要看职称委员会的要求而定。 2、看你中级报的是什么中级?如是工程师,就要参加全国的职称英语和计算机考试&…

[SDOI2016]储能表

Description 有一个 n 行 m 列的表格,行从 0 到 n−1 编号,列从 0 到 m−1 编号。每个格子都储存着能量。最初,第 i 行第 j 列的格子储存着 (i xor j) 点能量。所以,整个表格储存的总能量是, 随着时间的推移&#xff0…

军用计算机ip等级是什么,加固计算机的IP防护等级是什么?

加固计算机的IP防护等级是什么?作者:鲁成伟业 | 时间:2021-04-28 09:00:43 | 人已围观加固计算机是各种现代化w器z备系统、j事电子信息系统以及国防科研系统中不可缺少的、到处可见的设备。小到嵌入式的微处理器,大到百万亿次级的…

SpringMvc渲染视图

这篇博文讨论的问题是从ModelAndView如何渲染到页面。 首先要知道每个请求处理完之后都会返回一个ModelAndView对象。 这里我分6种情况来分析,代表6种返回类型: ModelAndViewMap,ModelMapModelViewStringVoid我先贴出我的测试的后台代码&…

山西计算机工程师职称英语,山西中级工程师职称在线查询

技校网专门为您推荐的类似问题答案问题1:新疆石河子中级工程师职称在哪查询应该还没出,这里说不定有吧。。。不确定~问题2:武汉市中级工程师职称如何办理楼主,看你是要办那个对方的,现在大多数市面上都是随州办理的 比较容易办到 还有专科毕业…

spring3: 切面及通知实例 Aspectj的aop

1.前置通知 接口: package chapter1.server;public interface IHelloService {public void sayAdvisorBefore(String param) ; }实现 package chapter1.service.impl;import chapter1.server.IHelloService;public class HelloService implements IHelloService { p…

微型计算机接口与技术期末,微机原理与接口技术期末考试试题及答案.pdf

微机原理与接口技术期末考试题库1. 微机系统的硬件由哪几部分组成?答:三部分:微型计算机 (微处理器,存储器,I/0接口,系统总线),外围设备,电源。2. 什么是微机的总线,分为…

html对图片轮播脚本怎么调用,【jquery前端开发】可调整的幻灯片(图片轮播)

第一次写博客,希望接下来写的东西 或多或少能帮到些人,虽然这些东西都是一些大神前辈们写了无数遍的东西,但我尽量以一名小白的视角把代码写得清楚点,好心人的就给点赞吧。1.前期准备这是我们编写代码前必须要做的事,在…

数据类型总结(干货)

Java中的数据类型和C的数据类型基本是一致的,本来以为不需要怎么看,后来发现还是有些地方需要好好总结一下。 基本的就不说了,直接上干货。 我总结了下,数据类型的转换和赋值有以下几点是比较麻烦的: 1、整数直接量可以…

计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...

电脑配置决定了一台电脑的性能好坏,如果电脑配置没有达到游戏或者软件的要求,那么肯定无法流畅运行的。对于一些小白用户不知道如何查看电脑硬件配置,那么本机电脑硬件配置信息怎么看?下面装机之家小编分享一下Win7/Win10查看详细…

软件工程网络15个人阅读作业2(201521123024丁树乐)

提出问题 question1.我看到书P27中写到“100%的代码覆盖率并不等同于100%的正确性”那么怎么样去确保100%的正确性? 写代码注意结构和代码规范,注释要写全,代码尽量精简,不要一坨坨的堆在一起。 在目前行业内的成熟方案有如下几个…