Android API Guides---View Animation

来源:互联网 发布:淘宝运费险最多赔多少 编辑:程序博客网 时间:2024/06/06 02:01

View Animation

您可以使用视图动画系统对视图执行补间动画。吐温动画计算与信息动画如起点,终点,尺寸,旋转和动画的其他共同的方面。


补间动画可以执行一系列的视图对象的内容进行简单的转换(位置,大小,旋转和透明度)的。所以,如果你有一个TextView对象,你可以移动,旋转,增长或缩小文本。如果它有一个背景图片,背景图像与文本转化一起。动画包提供的补间动画中使用的所有类。


动漫指令序列定义补间动画,通过XML或Android的代码中定义。正如定义布局,XML文件建议,因为它更可读,可重复使用,并且支持热插拔不是硬编码的动画。在下面的例子中,我们使用XML。 (要了解更多关于在应用程序代码中定义的,而不是XML的动画,指AnimationSet类和其他动画子类)。


动画指令定义要发生,何时发生,他们的转化,以及多久他们应该适用。转换可以连续或同时 - 例如,你可以有一个TextView移动内容由左到右,然后旋转180度,或者你可以有文字移动和同时转动。每个变换采用一组特异于该变换参数(起始大小和尺寸的变化结束的大小,起始角度和旋转结束角度,等等),并且还一组通用参数(例如,开始时间和持续时间) 。为了让几个转换同时发生,给他们相同的开始时间;以使它们的顺序,计算开始时间加上前述转化的持续时间。


动画XML文件属于你的Andr​​oid项目的RES /动画/目录下。该文件必须有一个根元素:这将是单个<阿尔法>,<规模>,<翻译>,<旋转>,插元素,或<set>元素来装这些元素组(其中可能包括另一<设置>)。默认情况下,所有的动画指令同时适用。以使它们按顺序发生,必须指定startOffset属性,如下面的例子中


从ApiDemos之一以下XML是用来拉伸,然后同时旋转,旋转视图对象。

<set android:shareInterpolator="false">    <scale        android:interpolator="@android:anim/accelerate_decelerate_interpolator"        android:fromXScale="1.0"        android:toXScale="1.4"        android:fromYScale="1.0"        android:toYScale="0.6"        android:pivotX="50%"        android:pivotY="50%"        android:fillAfter="false"        android:duration="700" />    <set android:interpolator="@android:anim/decelerate_interpolator">        <scale           android:fromXScale="1.4"           android:toXScale="0.0"           android:fromYScale="0.6"           android:toYScale="0.0"           android:pivotX="50%"           android:pivotY="50%"           android:startOffset="700"           android:duration="400"           android:fillBefore="false" />        <rotate           android:fromDegrees="0"           android:toDegrees="-45"           android:toYScale="0.0"           android:pivotX="50%"           android:pivotY="50%"           android:startOffset="700"           android:duration="400" />    </set></set>
屏幕坐标(在本实施例未使用)是(0,0)在左上角,并且随着你去向下和向右。
一些数值,如pivotX,可以相对于物体本身或相对于母体指定。一定要使用正确的格式为你想要的(“50”相对于50%的父母,或“50%”相对于50%本身)的内容。
你可以决定如何转换通过分配一个内插器上施加的时间。 Android包括指定不同的速度曲线插补几个子类:例如,AccelerateInterpolator讲述了一个转变,开始缓慢加速。每一个具有可以在XML施加一个属性值。
有了这个XML项目的RES /动画/目录下保存为超空间jump.xml,下面的代码将引用它,并把它应用到从布局的ImageView的对象。

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);spaceshipImage.startAnimation(hyperspaceJumpAnimation);
作为一种替代startAnimation(),您可以定义一个起始时间与Animation.setStartTime()动画,然后将动画分配与View.setAnimation视图()。


有关XML语法的详细信息,可标记和属性,看动画资源。


注意:无论怎样你的动画可以移动或调整,保存你的动画不会自动调整以适应它的视图的边界。即使如此,动画将仍然被绘制超出其观的界限,并不会被剪切。然而,如果动画超过父视图的边界将发生削波。

0 0
原创粉丝点击