Android自定义View之鲨鱼和小鱼的等待动画
Android自定义View之鲨鱼和小鱼的等待动画
之前在看文章的时候发现了一个gif动画,感觉很有意思,适逢最近学习kotlin,就打算用kotlin在android中实现一次,部分角度及参数设置的比较随意,如有需要可以可随意修改
先看效果图
部分角度及速率还有优化的空间,不过主要的效果都已经实现出来了
设计过程因为是个动画,刚看的时候感觉无从下手,仔细分析过后,发现…其实很简单的
首先是一个循环的动画,先要找到某个循环的开始或者结束,我截取的某个循环部分是鲨鱼鳍在右侧,本地左右变化几下,然后向左追逐小鱼到左侧部分.向右的部分,通过将向左的部分x镜像一下就可以得到.
由此可以将整个画面拆成三个部分:
其一是水面的部分,水面以下及水面和鱼接触的部分的留白处理都是在后面鲨鱼和小鱼处进行的,所以最后绘制的是一个水面以下部分的遮挡,这个部分也是一个比较好绘制的部分
其二是鲨鱼鳍的部分, 这个部分难度中等,主要的难度是两个圆找交点的计算过程…如果有需要可以根据代码设计相关参数进行调整
其三是小鱼的部分,这个是画面中最难实现的部分,主要涉及小鱼的绘制(椭圆及三角形),小鱼的水面的接 ...
再看求最大公约数的算法
再看求最大公约数的算法
由渐入深学习大公约数的算法,从最简单的遍历循环的方法到通过移位运算大幅提高大数情况下的计算效率
实例代码均为kotlin
遍历计算思路都用遍历了… 还要什么思路
代码实现
优势思路简洁
劣势效率十分低下,和其它方法花费的时间已不在一个数量级中
辗转相除法
辗转相除法:又名欧几里德算法(Euclidean algorithm),是求最大公约数的一种方法.辗转相除法可以算得上是最早的算法
思路用较小数除较大数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。
如果我们计算49和21的最大公约数
35 / 21 = 1…14 用较大的数除以较小的数,得到的余数为14
21 / 14 = 1…7 用上一步中的被除数除以上一步计算中得到的余数为7
14 / 7 = 2 重复上述的过程,直到计算的结果中不存在余数.此时除数就是我们需要的最大公约数
代码实现
优势当数据较 ...
Https从了解到算了
Https从了解到算了Https的概念以下相关名词均摘自wikipedia
Https 超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。
SSL 安全套接层(Secure Sockets Layer)是netscape设计的主要用于Web的安全传输协议,位于可靠的面向连接的网络层协议和应用层协议之间的一种协议层。
TLS 传输层安全协议(英语:Transport Layer Security) 用于两个应用程序之间提供保密性和数据完整性。
IETF 互联网工程任务小组(英语:Internet Engineering Task Force,縮寫為IET ...
RpgMaker教程5
RpgMaker教程5Step11 让我们创造一个英雄角色在RpgMaker的数据库中默认初始化设置了一些数据,例如角色,怪物等数据.
打开游戏中的数据库
数据库页面,根据版本或者设置不同,可能部分数据不同
创建应该一个新的角色我们可以在”数据库”中的”角色”标签中对角色进行编辑.
我们在左下方的部分可以设置最大角色数量.当前是1,如果想要设置更多的角色,要先修改最大角色数量.如果我们创建一个新的角色,就先将最大角色设置为2.
设置最大角色数量为2
设置最大角色数量为2,新的角色还没有设置内容,所以只显示了”0002”
设置角色名称
设置角色名称
我们设置角色的名称为”王富贵”,我们还可以设置角色的昵称和简称的内容.
设置角色形象
设置角色图像
设置角色脸图
设置角色行走图
设置角色战斗图
通过双击”角色”标签”图像”位置的三个不同图像部分来设置不同需求时的图像.
设置角色职业
通过下拉菜单来选择默认提供的几个职业.
设置职业信息
不同版本的面板有做不同 已mv版本为主.
数据库职业标签
设置经验值曲线
经验值曲线
我们可以根据需求和职业特色来 ...
RpgMaker教程4
RpgMaker教程4在第三回教程中,我们使用了简单的”场景事件” 来进行两个地图页面之间的交互
这一回中我们要在城堡中和国王开始交谈.在这里我将使用”开关”
Step8 和国王进行交谈我们要设置一个国王,来告诉我们的主角 冒险的目的(打败魔王)
启动事件编辑器
将模式设置为事件模式
指定国王的位置
将光标放置在王座的坐标中.
右键选择 新建
右键单击弹出弹出菜单,然后选择事件
事件编辑页面
创建事件
创建事件的时候打开此事件编辑器,在事件编辑器中可以对事件的出现条件及事件的执行进行调整.看起来有很多的条目,不过根据不同的事件内容可以设置项目的默认设置.
选择显示的图像选择游戏中事件显示的时候展示的图像
事件编辑器->图像
双击展示图像的部分
从列表中选择一个图像
输入文本信息输入国王对主角的对话,双击”执行内容”中的”♦”标识,显示事件指令的列表页面.
事件指令事件指令是用于创建事件的指令.根据你需要的操作,会通过不同的命令来实现事件.
事件指令列表第一页
如果需要在游戏中显示文字对话类的功能,使用”显示文字”事件指令
显示文字对话框
在” ...
RpgMaker教程3
开始填坑的我
RpgMaker入门教程3第三回 让我们开始制作城堡在第二回中我们创建了一个新的项目 并制作了世界地图
下一个阶段 我们将创建对应标识(城镇及地下城)的内容
Step6 开始制作城堡的地图创建一个新的地图在编辑器左下角的”世界地图”标签中右键 选择新建地图 来创建一个新的地图
根据上面图片对新的地图属性进行设置,将地图名称更改为“冒险开始的城堡地图” ,地图大小设置为默认宽度17和高度13,它是一个只有一个屏幕的大小的地图,别忘了设置BGM.
绘制城堡地图我们要绘制一张地图,我们想象一下国王在城堡中生活的场景
通过瓷砖 柱子 还有进行装饰,并将国王放在地图的中间,并在下部设置一个出人口.
Step7 创建一个简单的”场所移动”时间刚刚创建的地图之间是互相独立的,我们要通过”事件”来将不同的地图相互联系起来.
下面我来简单介绍一下什么是 “事件”
在RPG Maker中,我们常常使用”事件”,这是游戏中发生的事件的统称.比如城镇中的提示,宝箱和宝物,地图之间的连接,现在开始你可以显示交流和使用物品,任何游戏中发生的事情都是使用的事件.
将世界地图和城堡的地图连 ...
中国国家气象局api数据分析
中国国家气象局api数据分析
天气预报是程序中很常见的功能 然而现在免费好用的天气api却很难找 不妨仔细的看一下国家气象局 本分就此网站来获取天气
地址及页面分析地址分析 通过尝试,想要获取某个城市或者地址的天气页面有两种方式,一种是通过经纬度访问http://m.weather.com.cn/d/town/index?lat=39.915055&lon=116.403982,另一种是通过城市id访问http://m.weather.com.cn/mweather/101010100.shtml 两个地址都能得到北京市的天气情况 不过前一种是经纬度,另一种是城市id.
关于城市的id可以查看http://mobile.weather.com.cn/js/citylist.xml可以得到全国2500多个城市县区及全球其他国家6000多个城市的数据 可以直接通过以上的接口获得相关城市的天气数据
页面分析id查询 我们先访问以下http://m.weather.com.cn/mweather/101010100.shtml页面 看看整个页面都请求了什么
http:/ ...
Android自定义View之仪表盘
Android自定义View之仪表盘
又是新系列(坑) 感觉都很零碎,能积累一些是一些了
背景随着项目开发 越来越多的需求被摆在面前 其中不免涉及到定制的功能其中仪表盘也是一个很常用的功能
效果图
设计过程外侧渐变圆环
外侧刻度盘及文字显示
指针显示
内部圆环及文字展示
代码实现自定义组件显示优化设置自定义组件的时候要优化组件的高度
1234567protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = MeasureSpec.getSize(widthMeasureSpec); int heitht = width / 2 / 4 * 5; initIndex(width / 2); //优化组件高度 setMeasuredDimension(width, heitht);}
onDraw()过程123456789101112protected void onDraw(Canvas canvas) { ...
RpgMaker入门教程2
上一回的翻译过后发现好多迷之翻译 这里开始决定不再完全依靠原文 部分文本有所删减并增加大量个人经验
第二回 游戏的蓝图这里第二回的初学者教程
在第一回中我们设计了整体的流程图
这一回中我们将继续做游戏的开发工作
试用版本可能不包含部分图片资源
Step2 创建一个新的项目现在,我们要创建一个新项目,让我们启动程序,在菜单 文件-新建项目中
文件名游戏名什么的 应该不需要解释了
Step3 制作地图前的准备让我们绘制一个野外的地图来做作为冒险的舞台,最初的世界地图的宽和高都是100(Vx版本),因为他需要展示很多的信息,初次之外我们还会制作很多30*30的详细地图
在MAO001的对象中右键选择地图设置,设定地图的参数
除了有地图的大小还可以设置BGM和遇敌详情
改变地图的大小将地图的宽和高通过地图属性的宽度和高度设置为30
更改选择的BGM通过改变BGM的设定来变更当前地图的BGN音效,选择自动切换BGM,点击下方的 … 按钮显来选择音效在这里选择Filed1的BGM音效, 在后面的章节中我会介绍出现敌人的选项
Step4 绘制地图如果你准备好了 那么让我开始绘制 ...
如何在SpeedDialPlus中使用EarthViewfromGoogleEarth图片作为背景
如何在SpeedDialPlus中使用EarthViewfromGoogleEarth图片作为背景介绍Speed Dial Plus和Earth View from Google Earth都是Chrome中的两个十分好用的新标签页插件
Speed Dial Plus可以在你打开一个新的标签页的时候提供经常访问的页面的快捷方式 虽然还有很多扩展, 但是这个功能真心好用
Earth View from Google Earth可以在你打开一个新的标签页的时候展示一副google earth拍摄的图片(虽然只有1500多个图片 但是每幅图都是十分别致的)
需求这两个都是十分优秀的标签页的工具,那么问题就是 这两个不能共同使用 虽然SDP提供了设置背景页面的方法,但是每次只能设置成一个页面
解决思路通过分析Earth View from Google Earth来获取所有图片的地址 再在本地或者自己的服务器中部署一个服务器 可以随机返回有效图片地址中的一个 再将SDP中设置背景为自己的服务器设定的地址
最终实现打开新标签页(SDP) SDP访问你的服务地址 服务随机返回一个图片地址 SDP ...