枕上诗书闲处好,门前风景雨来佳。这篇文章主要讲述android动画具体解释六 XML中定义动画相关的知识,希望能为你提供帮助。
动画View
属性动画系统同意动画View对象并提供非常多比view动画系统更高级的功能。view动画系统通过改变绘制方式来变换View对象,view动画是被view的容器所处理的,由于View本身没有要操控的属性。结果就是View被动画了。但View对象本身并没有变化。
在android3.0中,新的属性和对应的getter和setter方法被增加以克服此缺点。
属性动画系统能够通过改变View对象的真实属性来动画Views。
并且。View也会在其属性改变时自己主动调用invalidate()方法来刷新屏幕。View类中的能促进属性动画能力的的新属性有:
- translationX和translationY:这两个属性控制View的位置。它们是View被layout容器所设置的坐标位置的增量。
- rotation,rotationX,和rotationY:这些属性控制着在在2D(rotation属性)和3D上的旋转。
- 【android动画具体解释六 XML中定义动画】scaleX和scaleY:这些属性控制View的2D缩放。
- pivotX和pivotY:这些属性控制着中心点的位置,旋转和缩放变化对是环绕它进行的。默认下。中心点在对象的中心位置。
- x和y:这些代表了View在container中的终于位置。它是left和top与translationX和translationY的和。
- alpha:代表了View的透明度。1(不透明)是默认值,0表示全然透明(看不见了)。
ObjectAnimator.ofFloat(myView," rotation" , 0f, 360f);
用ViewPropertyAnimator进行动画
ViewPropertyAnimator提供了一个同一时候动画某个View中的多个属性的简便方法,仅仅需使用一个Animator对象。它的行为非常像ObjectAnimator,由于它改动了真正的view属性,可是它对于同一时候动画多个属性更在行。另外。使用ViewPropertyAnimator的代码更加简洁易懂。以下的代码片段演示了当同一时候动画一个View的x和y属性时使用多个ObjectAnimator对象、单个ObjectAnimator、和ViewPropertyAnimator的不同。
多个ObjectAnimator 对象
ObjectAnimatoranimX = ObjectAnimator.ofFloat(myView, " x" , 50f); ObjectAnimatoranimY = ObjectAnimator.ofFloat(myView, " y" , 100f); AnimatorSetanimSetXY = new AnimatorSet(); animSetXY.playTogether(animX,animY); animSetXY.start();
一个ObjectAnimator
PropertyValuesHolderpvhX = PropertyValuesHolder.ofFloat(" x" , 50f); PropertyValuesHolderpvhY = PropertyValuesHolder.ofFloat(" y" , 100f); ObjectAnimator.ofPropertyValuesHolder(myView,pvhX, pvyY).start();
ViewPropertyAnimator
myView.animate().x(50f).y(100f);
在XML中声明动画
属性动画系统使你能够使用XML声明属性动画而不用写代码。
通过在XML中定义动画。你能够轻易的在多个activity中重用你的动画,并且能够更easy的改动动画顺序。
为了区分使用了新的属性动画API和使用了旧的view动画框架的文件。从Android3.1開始,你应该将属性动画XML文件保存到res/animator/目录下(而不是res/anim/)。使用animator时。其目录的名字是可选的。可是当你要使用EclipseADT plugin (ADT 11.0.0+)中的layout编辑工具时就是必须的了,由于ADT仅仅去res/animator/目录下搜寻属性动画资源。
以下的属性动画类具有支持XML中声明的能力:
- ValueAnimator- <
animator>
- ObjectAnimator- <
objectAnimator>
- AnimatorSet- <
set>
< setandroid:ordering=" sequentially" > < set> < objectAnimatorandroid:propertyName=" x" android:duration=" 500" android:valueTo=" 400" android:valueType=" intType" /> < objectAnimatorandroid:propertyName=" y" android:duration=" 500" android:valueTo=" 300" android:valueType=" intType" /> < /set> < objectAnimatorandroid:propertyName=" alpha" android:duration=" 500" android:valueTo=" 1f" /> < /set>
要播放此动画,你必须在你的代码中inflateXML 资源成一个AnimatorSet对象,然后设置全部动画的目标对象。再開始动画。调用setTarget()为全部的子集AnimatorSet设置单个对象非常easy。以下的代码演示了怎样做:
AnimatorSetset = (AnimatorSet) AnimatorInflater.loadAnimator(myContext,R.anim.property_animator); set.setTarget(myObject); set.start();
property_animator是XML文件的名字。
上一篇:android动画具体解释五 layout,插值与评估器
推荐阅读
- android-调用系统的ContentPrivder获取单张图片实现剪切做头像及源代码下载
- Android学习——控件ListView的使用
- runtime|WasmEdge 0.9.1 发布(更佳 networking 支持与开发者体验、安卓支持)
- 关于Android滑动冲突的解决方法
- android 自己定义水平和圆形progressbar 仅仅定义一些style就能够
- mongodb的cappedCollection集合
- 手把手教你_怎么找android应用的包名和启动activity
- Android 5.0 源代码结构
- 圣熙女鞋APP原型图纸