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

网站注册需要多少钱网站建设学习步骤

网站注册需要多少钱,网站建设学习步骤,wordpress 菜单 双语,深圳网站建设服务代码2019独角兽企业重金招聘Python工程师标准 在上周二文章中介绍补间动画缺点的时候有提到过#xff0c;补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制#xff0c;它可以对任意对象进行动画操作。那么大家应该还记得之前我举的一个例子 在上周二文章中介绍补间动画缺点的时候有提到过补间动画是只能对View对象进行动画操作的。而属性动画就不再受这个限制它可以对任意对象进行动画操作。那么大家应该还记得之前我举的一个例子比如说我们有一个自定义的View在这个View当中有一个Point对象用于管理坐标然后在onDraw()方法当中就是根据这个Point对象的坐标值来进行绘制的。也就是说如果我们可以对Point对象进行动画操作那么整个自定义View的动画效果就有了。OK下面我们就来学习一下如何实现这样的效果。   在开始动手之前我们还需要掌握另外一个知识点就是TypeEvaluator的用法。可能在大多数情况下我们使用属性动画的时候都不会用到TypeEvaluator但是大家还是应该了解一下它的用法以防止当我们遇到一些解决不掉的问题时能够想起来还有这样的一种解决方案。   那么TypeEvaluator的作用到底是什么呢简单来说就是告诉动画系统如何从初始值过度到结束值。我们在上周的文章中学到的ValueAnimator.ofFloat()方法就是实现了初始值与结束值之间的平滑过度那么这个平滑过度是怎么做到的呢其实就是系统内置了一个FloatEvaluator它通过计算告知动画系统如何从初始值过度到结束值我们来看一下FloatEvaluator的代码实现     可以看到FloatEvaluator实现了TypeEvaluator接口然后重写evaluate()方法。evaluate()方法当中传入了三个参数第一个参数fraction非常重要这个参数用于表示动画的完成度的我们应该根据它来计算当前动画的值应该是多少第二第三个参数分别表示动画的初始值和结束值。那么上述代码的逻辑就比较清晰了用结束值减去初始值算出它们之间的差值然后乘以fraction这个系数再加上初始值那么就得到当前动画的值了。   好的那FloatEvaluator是系统内置好的功能并不需要我们自己去编写但介绍它的实现方法是要为我们后面的功能铺路的。前面我们使用过了ValueAnimator的ofFloat()和ofInt()方法分别用于对浮点型和整型的数据进行动画操作的但实际上ValueAnimator中还有一个ofObject()方法是用于对任意对象进行动画操作的。但是相比于浮点型或整型数据对象的动画操作明显要更复杂一些因为系统将完全无法知道如何从初始对象过度到结束对象因此这个时候我们就需要实现一个自己的TypeEvaluator来告知系统如何进行过度。   下面来先定义一个Point类如下所示     Point类非常简单只有x和y两个变量用于记录坐标的位置并提供了构造方法来设置坐标以及get方法来获取坐标。接下来定义PointEvaluator如下所示     可以看到PointEvaluator同样实现了TypeEvaluator接口并重写了evaluate()方法。其实evaluate()方法中的逻辑还是非常简单的先是将startValue和endValue强转成Point对象然后同样根据fraction来计算当前动画的x和y的值最后组装到一个新的Point对象当中并返回。   这样我们就将PointEvaluator编写完成了接下来我们就可以非常轻松地对Point对象进行动画操作了比如说我们有两个Point对象现在需要将Point1通过动画平滑过度到Point2就可以这样写     代码很简单这里我们先是new出了两个Point对象并在构造函数中分别设置了它们的坐标点。然后调用ValueAnimator的ofObject()方法来构建ValueAnimator的实例这里需要注意的是ofObject()方法要求多传入一个TypeEvaluator参数这里我们只需要传入刚才定义好的PointEvaluator的实例就可以了。   好的这就是自定义TypeEvaluator的全部用法掌握了这些知识之后我们就可以来尝试一下如何通过对Point对象进行动画操作从而实现整个自定义View的动画效果。   新建一个MyAnimView继承自View代码如下所示     基本上还是很简单的总共也没几行代码。首先在自定义View的构造方法当中初始化了一个Paint对象作为画笔并将画笔颜色设置为蓝色接着在onDraw()方法当中进行绘制。这里我们绘制的逻辑是由currentPoint这个对象控制的如果currentPoint对象不等于空那么就调用drawCircle()方法在currentPoint的坐标位置画出一个半径为50的圆如果currentPoint对象是空那么就调用startAnimation()方法来启动动画。   那么我们来观察一下startAnimation()方法中的代码其实大家应该很熟悉了就是对Point对象进行了一个动画操作而已。这里我们定义了一个startPoint和一个endPoint坐标分别是View的左上角和右下角并将动画的时长设为5秒。然后有一点需要大家注意的就是我们通过监听器对动画的过程进行了监听每当Point值有改变的时候都会回调onAnimationUpdate()方法。在这个方法当中我们对currentPoint对象进行了重新赋值并调用了invalidate()方法这样的话onDraw()方法就会重新调用并且由于currentPoint对象的坐标已经改变了那么绘制的位置也会改变于是一个平移的动画效果也就实现了。   下面我们只需要在布局文件当中引入这个自定义控件     最后运行一下程序效果如下图所示     OK这样我们就成功实现了通过对对象进行值操作来实现动画效果的功能这就是ValueAnimator的进阶用法。   ObjectAnimator的进阶用法   ObjectAnimator的基本用法和工作原理在上周二的文章当中都已经讲解过了相信大家都已经掌握。那么大家应该都还记得我们在吐槽补间动画的时候有提到过补间动画是只能实现移动、缩放、旋转和淡入淡出这四种动画操作的功能限定死就是这些基本上没有任何扩展性可言。比如我们想要实现对View的颜色进行动态改变补间动画是没有办法做到的。   但是属性动画就不会受这些条条框框的限制它的扩展性非常强对于动态改变View的颜色这种功能是完全可是胜任的那么下面我们就来学习一下如何实现这样的效果。   大家应该都还记得ObjectAnimator内部的工作机制是通过寻找特定属性的get和set方法然后通过方法不断地对值进行改变从而实现动画效果的。因此我们就需要在MyAnimView中定义一个color属性并提供它的get和set方法。这里我们可以将color属性设置为字符串类型使用#RRGGBB这种格式来表示颜色值代码如下所示     注意在setColor()方法当中我们编写了一个非常简单的逻辑就是将画笔的颜色设置成方法参数传入的颜色然后调用了invalidate()方法。这段代码虽然只有三行但是却执行了一个非常核心的功能就是在改变了画笔颜色之后立即刷新视图然后onDraw()方法就会调用。在onDraw()方法当中会根据当前画笔的颜色来进行绘制这样颜色也就会动态进行改变了。   那么接下来的问题就是怎样让setColor()方法得到调用了毫无疑问当然是要借助ObjectAnimator类但是在使用ObjectAnimator之前我们还要完成一个非常重要的工作就是编写一个用于告知系统如何进行颜色过度的TypeEvaluator。创建ColorEvaluator并实现TypeEvaluator接口代码如下所示     这大概是我们整个动画操作当中最复杂的一个类了。没错属性动画的高级用法中最有技术含量的也就是如何编写出一个合适的TypeEvaluator。好在刚才我们已经编写了一个PointEvaluator对它的基本工作原理已经有了了解那么这里我们主要学习一下ColorEvaluator的逻辑流程吧。   首先在evaluate()方法当中获取到颜色的初始值和结束值并通过字符串截取的方式将颜色分为RGB三个部分并将RGB的值转换成十进制数字那么每个颜色的取值范围就是0-255。接下来计算一下初始颜色值到结束颜色值之间的差值这个差值很重要决定着颜色变化的快慢如果初始颜色值和结束颜色值很相近那么颜色变化就会比较缓慢而如果颜色值相差很大比如说从黑到白那么就要经历255*3这个幅度的颜色过度变化就会非常快。   那么控制颜色变化的速度是通过getCurrentColor()这个方法来实现的这个方法会根据当前的fraction值来计算目前应该过度到什么颜色并且这里会根据初始和结束的颜色差值来控制变化速度最终将计算出的颜色进行返回。   最后由于我们计算出的颜色是十进制数字这里还需要调用一下getHexString()方法把它们转换成十六进制字符串再将RGB颜色拼装起来之后作为最终的结果返回。   好了ColorEvaluator写完之后我们就把最复杂的工作完成了剩下的就是一些简单调用的问题了比如说我们想要实现从蓝色到红色的动画过度历时5秒就可以这样写     用法非常简单易懂相信不需要我再进行解释了。   接下来我们需要将上面一段代码移到MyAnimView类当中让它和刚才的Point移动动画可以结合到一起播放这就要借助我们在上篇文章当中学到的组合动画的技术了。修改MyAnimView中的代码如下所示     可以看到我们并没有改动太多的代码重点只是修改了startAnimation()方法中的部分内容。这里先是将颜色过度的代码逻辑移动到了startAnimation()方法当中注意由于这段代码本身就是在MyAnimView当中执行的因此ObjectAnimator.ofObject()的第一个参数直接传this就可以了。接着我们又创建了一个AnimatorSet并把两个动画设置成同时播放动画时长为五秒最后启动动画。现在重新运行一下代码效果如下图所示     OK位置动画和颜色动画非常融洽的结合到一起了看上去效果还是相当不错的这样我们就把ObjectAnimator的进阶用法也掌握了。   好的通过本篇文章的学习我们对属性动画已经有了颇为深刻的认识那么今天的内容就到这里下周二的文章将会给大家带来属性动画的高级用法。 转载于:https://my.oschina.net/JiangTun/blog/914267
http://www.huolong8.cn/news/6430/

相关文章:

  • 兼容手机的网站龙岩网站建设大概费用
  • 域名主机网站导航遵义网约车租车公司
  • 做网站接私活价格怎么算长沙seo招聘
  • 黄山新洲建设集团网站帝国cms 门户网站
  • 网站做301根目录在哪里一品楼
  • 佛山网站建设网络公司浙江专业网站seo
  • 什么是工具型网站wordpress注册链接无效
  • 外贸网站优化方案毕业设计怎么做网站
  • 西安网站手机网站建设网络营销有哪些模式
  • 前端只是做网站吗app系统开发公司
  • 自贡市规划建设局网站开发一个app平台大概需要多少钱?
  • qq代刷网站社区建设vi应用设计
  • 多站点网站群的建设与管理WordPress改成淘宝客
  • 高埗做网站公司量化交易网站开发
  • 湖南竞网做网站好吗招聘类网站建设
  • 工程服务建设网站做国内打不开的网站
  • 高清的广州网站建设阿里云网站建设详细教程
  • 建设音乐网站的目的郑州经济技术开发区属于哪个区
  • 网站开发中遇到哪些问题在线免费看电视剧的网站
  • 装修网站实景图vr怎么做的wordpress 页面宽度
  • 全网网站建设优化三亚谁做网站
  • 网站页面做多宽做pc端网站代理商
  • 如何查询网站注册信息查询邢台移动网站建设
  • 免费自做网站网站备案查询接口
  • 汶上网站制作网站免费搭建
  • php网站建设用什么重庆交通建设监理协会网站
  • 企业自助建站湖北做网站教程哪家好
  • 长春哪家做网站便宜泸州中泸建设集团有限公司网站
  • 手机免费建立网站吗网站备案幕布拍照是什么
  • 个人网站展示山东三强建设咨询有限公司网站