视图动画

您可以使用视图动画系统在视图上执行补间动画。 Tween动画使用诸如起点,终点,大小,旋转和动画的其他常见方面的信息计算动画。

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

动画指令序列定义由XML或Android代码定义的补间动画。 与定义布局一样,推荐使用XML文件,因为它比硬编码动画更易读,可重复使用和可交换。 在下面的示例中,我们使用XML。 (要了解更多关于在应用程序代码中定义的,而不是XML的动画,指AnimationSet类和其他Animation子类)。

动画指令定义要发生的转换,发生的时间以及应用时间。 转换可以是顺序或同时的 - 例如,您可以让TextView的内容从左到右移动,然后旋转180度,或者让文本同时移动和旋转。 每个变换都采用一组特定于该变换的参数(尺寸变化的开始尺寸和结束尺寸,旋转的起始角度和结束角度等),以及一组通用参数(例如开始时间和持续时间) 。 要使几个转换同时发生,给他们相同的开始时间; 以使它们顺序,计算开始时间加上先前变换的持续时间。

动画XML文件所属的res/anim/你的Android项目的目录中。 该文件必须有一个根元素:这将是单个 ,插元素或元素来装这些元素组(其中可能包括另一 )。 默认情况下,所有动画指令都同时应用。 以使它们按顺序发生,必须指定startOffset属性,如下面的例子中

以下来自ApiDemos之一的XML用于拉伸,然后同时旋转和旋转一个View对象。


     
     
         
         
     
 

屏幕坐标(本示例中不使用)在左上角为(0,0),并且随着向下和向右移动而增加。

某些值(如pivotX)可以相对于对象本身或相对于父对象指定。 确保使用正确的格式(“50”表示相对于父表的50%,或“50%”表示相对于其自身的50%)。

你可以决定如何转换通过分配一个随时间施加Interpolator。 Android包括指定不同的速度曲线插补几个子类:例如, AccelerateInterpolator讲述了一个转变,开始缓慢加速。 每个都有一个可以在XML中应用的属性值。

有了这个XML保存为hyperspace_jump.xmlres/anim/项目的目录,下面的代码将引用它,并把它应用到一个ImageView从布局对象。

ImageView spaceshipImage = (ImageView) findViewById(R.id.spaceshipImage);
Animation hyperspaceJumpAnimation = AnimationUtils.loadAnimation(this, R.anim.hyperspace_jump);
spaceshipImage.startAnimation(hyperspaceJumpAnimation);

作为一种替代startAnimation()您可以定义一个开始时间与动画Animation.setStartTime()然后将动画分配到与View View.setAnimation()

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

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

你可能感兴趣的:(视图动画)