View Animation
你能使用view动画系统在Views上实现补间动画。补间动画使用例如开始点、结束点、尺寸、选择和动画的其他常见信息来计算动画。
补间动画能在View对象的内容上执行一系列简单的转换(位置、大小、选择和透明度)。因此,如果你有一个TextView对象,你能移动、选择、放大或者缩小该文本。如果你有一个背景图片,该背景图片也会随着该文本转换和改变。animation package包提供了实现补间动画需要用的所有类。
通过动画指令指令序列来定义补间动画,使用XML或者Android代码来实现动画。像定义一个布局一样,我们推荐使用XML文件来实现补间动画,因为,相比于硬编码实现,XML文件实现更易读、可复用和可热插拔。下面的例子里,我们使用XML。(如果想了解如何在app里通过代码实现动画,而不是XML文件,参见AnimatonSet类和其他的Animation的子类)
动画指令定义了你想要发生的View转换,什么时候发生,持续多长时间等。动画可以是顺序的或者同步的。例如,你能让一个TexView里的文本内容从左边移动到右边,然后旋转180度,或者你能让文本移动的同时旋转。每种转换接受一些参数用于指定该转换(对于大小改变时开始时的大小、结束时的大小,而对于旋转动画,则开始时的角度和结束时的角度,等等)。还包括一些其他的通用的参数(例如:开始时间和持续时长)。为了让多种转换同时发生,指定相同的开始时间;如果为了顺序播放动画,通过开始时间加上个转换的持续时间来计算该动画的开始时间。
该动画的XML文件位于你的android工程的res/anim/目录下。该文件必须只能有一个根元素:该根元素只能是<appha>、<scale>、<translate>、<rotate>,内插器元素,或者<set>元素。<set>元素持有这些元素组(可能会包含另一个<set>元素)。默认地,所有的动画指令是同时播放的。为了使得它们顺序播放,你必须指定startOffset属性,如下示例所示。
下面的例子来自于ApiDemos里,用于定义一个拉伸动画,同时对该View对象进行旋转。
<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,能通过相对于它自身或者相对于父View来指定。请确保使用满足你需求的合适的格式("50"表示相对于父布局的50%,"50%"表示相对于自身的50%)。
你能通过指定插值器来决定动画期间的转换值。Android提供了一些插值器用来指定特定的各种各样的加速曲线。例如,AccelerateInterpolator表示开始时慢,然后加速。对应有一个属性值来描述加速度,在XML里指定。
下面的代码了使用res/anim/目录下的hyperspace_jump.xml文件,然后将该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()将该动画指定到View上。
更多的XML语法、有效标签和属性的介绍,参见Animation Resources。
注意:不管你的View以何种方式移动或者缩放,持有动画的View的边界不会自动的调整来适应该改变。甚至View可能仍然在View的边界外绘制,而不会被修剪。然而,如果View动画超过了父View的边界View将被裁剪。
相关推荐
View Animation Only animate View objects If animate non-view objects, you have to implement your own code takes less time to setup and requires less code to write Drawable Animation Load drawable ...
参考 View Animation 效果
我的博客《Android动画之二:View Animation》附带源码
安卓Android源码——View中添加Animation.zip
基本的太阳地球月亮模型,地球围绕太阳转,月球围绕地球转
之前分别介绍了View Animation和Drawable Animation,学了就要用啊,今天给大家一个使用View Animation实现动画加载界面的实现。 首先先看一下实现效果。 下面是实现代码 package com.example.animationloading; ...
View Animation / 视图动画 English explanation can go to read this article Ⅱ. Drawable Animation / 帧动画 / Frame 动画 English explanation can go to read this article Ⅲ. Property Animation / 属性...
View Animation 也是指此动画。属性动画:.支持对所有View能更新的属性的动画(需要属性的setXxx()和getXxx()); 更改的是View实际的属性,所以不会影响其在动画执行后所在位置的正常使用; Android3.0 (API11)及...
android view animation
ViewAnimation This is a library of the AnimatorSet,it has three move path and many animation,you can make a easy animation of view by youself. animation of View i did not finish it at this time ...
参考 Android动画学习Demo(1) 关于ViewAnimation的用法及总结
Android提供了几种动画类型:View Animation 、Drawable Animation 、Property Animation 。View Animation相当简单,不过只能支持简单的缩放、平移、旋转、透明度基本的动画,且有一定的局限性。比如:你希望View有...
The Animation view is used to preview and edit Animation Clips for animated GameObjects in Unity. To open the Animation view in Unity, go to Window >Animation.
* View Animation:最早提供的一种动画,用来这只view。 * Drawable Animation:帧动画,一个一个的展示Drawable的resources,就像放幻灯片一样。 * Property Animation :属性动画只对Android 3.0(API 11)以上...
View中添加Animation.zip
// [self viewAnimation]; //View的动画 // [self imgToGrayimg]; //UIImage转为灰度图 // [self scaleFromScaledToSize:CGSizeMake(100, 100)]; //图像压缩 // [self SwipeViewAnimation]; //弹出动画 // [self ...
5、如果一切正常,那么可以分别看到帧动画(frame-by-frame)、布局动画(layout animation)和视图动画(view animation) 目的:动画效果可以让用户的体验感非常好。在“演示Android中的文字和图片特效控件的使用”资源...
Android View中添加Animation.rar
AndroidView中添加Animation.zip