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

天津营销网站建设公司旅游网站开发哪家好

天津营销网站建设公司,旅游网站开发哪家好,jsp怎么做购物网站,淄博做网站58同城使用Android两年多了#xff0c;工作中的动画也动能应付#xff0c;自认为Android中的动画自己也能用个八九不离十#xff0c;结果我在学习[Periscope点赞效果](http://www.jianshu.com/p/03fdcfd3ae9c)的时候发现动画的这些高级功能我从没用过、也没见过#xff0c;静下来…使用Android两年多了工作中的动画也动能应付自认为Android中的动画自己也能用个八九不离十结果我在学习[Periscope点赞效果](http://www.jianshu.com/p/03fdcfd3ae9c)的时候发现动画的这些高级功能我从没用过、也没见过静下来仔细想了下我也并不明白Android动画的实现原理以及生么时候用什么从视频以及ApiDemo中看到的LayoutAnimator以及颜色渐变、类似弹簧的反复回弹也都没思路。于是我就研究了下Android的这些动画并记录了下来。3.0以前android支持两种动画模式,tween animation,frame animation在3.0中又引入了一个新的动画系统property animation这三种动画模式在SDK中被称为property animation,view animation,drawable animation1. View Animation(Tween Animation)View Animation(Tween Animation):补间动画给出两个关键帧通过一些算法将给定属性值在给定的时间内在两个关键帧间渐变。(xml方式是在anim文件夹中)a.View Animation只能用于View对象而且职能支持一部分功能位移(translate)、旋转(rotate)、缩放(scale)、透明度渐变(alpha)b.还有一个局限性对于View Animation它只是改变了View对象绘制的位置而没有改变View对象本身(例如做一个位移动画那么可点击的位置仅仅还是View开始所在的位置跟移动中的这个动画并无关系)c.实现原理是父布局不断的画出一个外表一样的图像不断的通过invalidate 去进行重绘动画的算法其实都是在Transformation的Matrix矩阵中。2. Drawable Animation(Frame Animation)Drawable Animation(Frame Animation)帧动画就像GIF图片通过一系列Drawable依次显示来模拟动画的效果。(xml方式是在drawable中)Android中播放GIF图片的时候可使用这种方式(先分解成单个图片)。3. Property AnimationAndroid 3.0引入顾名思义它是实际更改view的属性而不像Tween Animation 仅仅是父布局绘制一个替身所以Property Animation的功能会强大很多。(在包android.animation下)相同Property Animation 兼容了 Tween Animation的所有功能设置动画时间、支持(位移、旋转、缩放、透明度渐变)、类似的监听(开始、结束、取消、重复)、插补器加强功能后浪推前浪后出来的Property Animation带来了更强悍的功能1. Evaluators(计算器)告诉Property Animation系统如何去计算属性值IntEvaluator:用于计算Int类型属性值的计算器。FloatEvaluator:用于计算Float类型属性值的计算器。ArgbEvaluator:用于计算以16进制形式表示的颜色值的计算器。TypeEvaluator:一个计算器接口它允许你创建你自己的计算器。如果你正在计算一个对象属性并不是int,float或者颜色值类型的那么你必须实现TypeEvaluator接口去指定如何去计算对象的属性值。2. 新加了ValueAnimator.AnimatorUpdateListener 监听onAnimationUpdate() - 在动画的每一帧上调用. 在这个方法中你可以使用ValueAnimator的getAnimatedValue()方法来获取(Evaluators)计算出来的值。AnimationSet提供了一个把多个动画组合成一个组合的机制并可设置组中动画的时序关系如同时播放顺序播放等。3. 新增属性动画的同时也新增了View的属性的设置获取方法ExamplegetLeft、getX、getTranslationX等等4. 通过AnimationSet应用多个动画以下例子同时应用5个动画播放anim1同时播放anim2,anim3,anim4播放anim5。AnimatorSet bouncer new AnimatorSet();bouncer.play(anim1).before(anim2);bouncer.play(anim2).with(anim3);bouncer.play(anim2).with(anim4)bouncer.play(anim5).after(amin2);animatorSet.start();5. ObjectAnimator与ValueAnimator之间的关系其实ObjectAnimator继承与ValueAnimatorObjectAnimator是为了提供简便的方法可以直接修改alpha、backgroundColor、translationX、x、y、width等甚至是一个普通对象的属性一言以蔽之如果直接通过属性名改属性就用ObjectAnimator例子Periscope点赞效果实现我又换了种方式实现了下运用我们的属性动画直接在ViewGroup上画出来代码传送门6. 同一对象的多个属性同时变化可优化如果需要对一个View的多个属性进行动画可以用ViewPropertyAnimator类该类对多属性动画进行了优化会合并一些invalidate()来减少刷新视图该类在3.1中引入。以下两段代码实现同样的效果PropertyValuesHolder pvhX PropertyValuesHolder.ofFloat(“x”, 50f);PropertyValuesHolder pvhY PropertyValuesHolder.ofFloat(“y”, 100f);ObjectAnimator.ofPropertyValuesHolder(myView, pvhX, pvyY).start();myView.animate().x(50f).y(100f);7. 原理异步根据插补器与Evaluator计算出当前View的属性再通过handler.post到UI线程通过反射给View设置当前属性。老版本的Property Animation原理讲解Tween Animation 与 Property Animation 使用选择因为Property Animation最终跟新UI其实也需要重新绘图所以属性动画肯定比Tween Animation要更好性能得多理论上流畅度也稍稍差点。所以建议能用Tween Animation的地方还是使用Tween 动画。根据ApiDemo罗列了以下几个实用场景(此处会有不少新的用法)1. 颜色渐变private static final int RED 0xffFF8080;private static final int BLUE 0xff8080FF;ValueAnimator colorAnim ObjectAnimator.ofInt(this, backgroundColor, RED, BLUE);colorAnim.setDuration(3000);colorAnim.setEvaluator(new ArgbEvaluator());colorAnim.setRepeatCount(ValueAnimator.INFINITE);colorAnim.setRepeatMode(ValueAnimator.REVERSE);colorAnim.start();2. 布局显示、不显示、隐藏(LayoutTransition)ViewGroup中的子元素可以通过setVisibility使其Visible、Invisible或Gone当有子元素可见性改变时可以向其应用动画通过LayoutTransition类应用此类动画transition.setAnimator(LayoutTransition.DISAPPEARING, customDisappearingAnim);通过setAnimator应用动画第一个参数表示应用的情境可以以下4种类型APPEARING        当一个元素变为Visible时对其应用的动画CHANGE_APPEARING   当一个元素变为Visible时因系统要重新布局有一些元素需要移动这些要移动的元素应用的动画DISAPPEARING      当一个元素变为InVisible时对其应用的动画CHANGE_DISAPPEARING 当一个元素变为Gone时因系统要重新布局有一些元素需要移动这些要移动的元素应用的动画 disappearing from thecontainer.步骤1. 给view设置LayoutTransitionLayoutTransition mTransitioner new LayoutTransition();view.setLayoutTransition(mTransitioner);2. 设置对应时间Transitioner.setStagger(LayoutTransition.CHANGE_APPEARING, 500);3. 设置动画ObjectAnimator changeIn ObjectAnimator.ofPropertyValuesHolder(this, pvhLeft, pvhRight, pvhScaleX, pvhScaleY).setDuration(mTransitioner.getDuration(LayoutTransition.CHANGE_APPEARING));mTransitioner.setAnimator(LayoutTransition.CHANGE_APPEARING, changeIn);4. 搞定3. KeyframeskeyFrame是一个 时间/值 对通过它可以定义一个在特定时间的特定状态而且在两个keyFrame之间可以定义不同的Interpolator就相当多个动画的拼接第一个动画的结束点是第二个动画的开始点。KeyFrame是抽象类要通过ofInt(),ofFloat(),ofObject()获得适当的KeyFrame然后通过PropertyValuesHolder.ofKeyframe获得PropertyValuesHolder对象Keyframe kf0 Keyframe.ofFloat(0f, 0f);Keyframe kf1 Keyframe.ofFloat(.9999f, 360f);Keyframe kf2 Keyframe.ofFloat(1f, 0f);PropertyValuesHolder pvhRotation PropertyValuesHolder.ofKeyframe(rotation, kf0, kf1, kf2);final ObjectAnimator changeOut ObjectAnimator.ofPropertyValuesHolder(this, pvhLeft, pvhRight, pvhRotation).setDuration(mTransitioner.getDuration(LayoutTransition.CHANGE_DISAPPEARING));4. 弹跳弹跳插补器bounceAnim.setInterpolator(new BounceInterpolator());设置特定一个时间点显示在那帧位置上bounceAnim.setCurrentPlayTime(seekTime);5. 反转切换布局其实就是一个旋转动画的拼接一组对立的插补器(加速AccelerateInterpolator、减速DecelerateInterpolator)ObjectAnimator visToInvis ObjectAnimator.ofFloat(visibleList, rotationY, 0f, 90f);visToInvis.setDuration(500);visToInvis.setInterpolator(accelerator);final ObjectAnimator invisToVis ObjectAnimator.ofFloat(invisibleList, rotationY,-90f, 0f);invisToVis.setDuration(500);invisToVis.setInterpolator(decelerator);visToInvis.addListener(new AnimatorListenerAdapter() {Overridepublic void onAnimationEnd(Animator anim) {visibleList.setVisibility(View.GONE);invisToVis.start();invisibleList.setVisibility(View.VISIBLE);}});visToInvis.start();
http://www.huolong8.cn/news/87157/

相关文章:

  • 网站建设比较好的seo基础
  • 旅游景点企业网站排名wordpress 响应式产品展示站
  • 刚做的网站为什么百度搜不到超炫酷网站欣赏
  • 外贸开发网站开发沧州网站开发
  • 赣州建设网站公司wordpress altair
  • 怎么打开域名网站越南网络公司排名
  • 网站开发期末作品代码和数据库运行好大全网站做哪些比较赚钱
  • 内网建站工具wordpress媒体主题
  • 山西众邦建设集团网站h5美食制作网站模板下载
  • asp网站空间申请百度排名优化咨询电话
  • 全县网站建设情况通报网站云空间大小
  • 网站建设搭建步骤陕西网站维护
  • 网站写动态新闻有什么好处网页制作方法视频教程
  • 中企动力做网站贵吗爱南宁app下载官网
  • 郑州做网站哪里便宜成为软件工程师的条件
  • 阿里云网站空间多合一可拖曳修改优化网站建设
  • 网站建设与维护 参考文献福州外包seo公司
  • 好的logo设计网站ui设计是什么意思啊
  • 健康私人定制网站怎么做麦壳云网站建设
  • 南京网站推广排名江门网站推广哪家好
  • 房地产网站建设存在问题企业搜索
  • 建立网站如何wordpress折叠代码
  • 长沙中小企业网站建设网站开发属于什么行业
  • 微信官方网站公众平台昆明网络推广招聘
  • 网站开发文档带er图公司查名网站
  • 更适合企业网站建设的cms系统中国新闻社是事业编制吗
  • 扬州网站建设sutengseo做网站
  • 建站公司用哪家服务器免费可以绑定域名网站空间
  • 2免费做网站今天的新闻直播
  • 烘焙食品网站建设需求分析全网网站快速排名推广软件