Android Animation学习总结
2011-01-09 18:17
411 查看
在Android中定义了2类animation
1.Tween Animation(补间动画)
通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画
2.Frame Animation(帧动画)
顺序播放事先做好的图像,是一种画面转换动画,好比放电影。
以下具体介绍这两类动画
Tween Animation
在XML中定义具体的动画 位置为:res/anim/fileName.xml(具体文件名)。
实际的文件名将被当做resource ID 在java代码 或者其他XML中被引用。
在XML中基本语法:
这个文件必须包含一个根元素,可以是<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。
<set>
一个容器 可以包含 (
属性:
interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
android 自带的interpolator
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
如果android定义的interpolators不符合你的效果也可以自定义interpolators
例子:
XML file saved at
<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:tension="7.0"
/>
<alpha> 淡入淡出动画效果
例子:
<alpha android:fromAlpha="1.0" //Float表示 起始透明度 0.0 透明 1.0 不透明
android:toAlpha="0" //Float表示 结束透明度 0.0 透明 1.0 不透明
android:duration="@android:integer/config_mediumAnimTime"//动画持续时间
/>
<scale> 渐变尺寸伸缩动画效果
例子:
<scale android:fromXScale="1.0" android:toXScale=".5" //动画开始和结束时x坐标上的伸缩尺寸 0.0 表示不伸缩 1.1 表示正常无变化
android:fromYScale="1.0" android:toYScale=".5" //动画开始和结束时y坐标上的伸缩尺寸 0.0 表示不伸缩 1.1 表示正常无变化
android:pivotX="50%p" android:pivotY="50%p" //动画相对于物件的x,y坐标开始位置 取值0%-100%. 50%
android:duration="@android:integer/config_mediumAnimTime" />
在应用程序中应用动画
<animation-list> 必须的 作为根元素 包含 一个或多个<item>
属性:
android:oneshot "true" if you want to perform the animation once; "false" to loop the animation
<item> 单独的帧动画
属性:
Drawable resource. The drawable to use for this frame.
Integer. The duration to show this frame, in milliseconds.
在应用程序中应用
1.Tween Animation(补间动画)
通过对场景里的对象不断做图像变换(平移、缩放、旋转)产生动画效果,即是一种渐变动画
2.Frame Animation(帧动画)
顺序播放事先做好的图像,是一种画面转换动画,好比放电影。
以下具体介绍这两类动画
Tween Animation
在XML中定义具体的动画 位置为:res/anim/fileName.xml(具体文件名)。
实际的文件名将被当做resource ID 在java代码 或者其他XML中被引用。
在XML中基本语法:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@[package:]anim/interpolator_resource" android:shareInterpolator=["true" | "false"] > <alpha android:fromAlpha="float" android:toAlpha="float" /> <scale android:fromXScale="float" android:toXScale="float" android:fromYScale="float" android:toYScale="float" android:pivotX="float" android:pivotY="float" /> <translate android:fromX="float" android:toX="float" android:fromY="float" android:toY="float" /> <rotate android:fromDegrees="float" android:toDegrees="float" android:pivotX="float" android:pivotY="float" /> <set> ... </set> </set>
这个文件必须包含一个根元素,可以是<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。
<set>
一个容器 可以包含 (
<alpha>,
<scale>,
<translate>,
<rotate>) or other
<set>元素。 在set中设置的属性 (for example, duration or fillBefore), 将覆盖它所包含的类型的设置的同一属性。
属性:
android:interpolator
interpolator 被用来修饰动画效果,定义动画的变化率,可以使存在的动画效果可以 accelerated(加速),decelerated(减速),repeated(重复),bounced(弹跳)等。
android 自带的interpolator
AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator 在动画开始的地方速率改变比较慢,然后开始加速
AnticipateInterpolator 开始的时候向后然后向前甩
AnticipateOvershootInterpolator 开始的时候向后然后向前甩一定值后返回最后的值
BounceInterpolator 动画结束的时候弹起
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator 在动画开始的地方快然后慢
LinearInterpolator 以常量速率改变
OvershootInterpolator 向前甩一定值后再回到原来位置
如果android定义的interpolators不符合你的效果也可以自定义interpolators
例子:
XML file saved at
res/anim/my_overshoot_interpolator.xml:
<?xml version="1.0" encoding="utf-8"?>
<overshootInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:tension="7.0"
/>
android:shareInterpolator
Boolean. "true" if you want to share the same interpolator among all child elements
<alpha> 淡入淡出动画效果
例子:
<alpha android:fromAlpha="1.0" //Float表示 起始透明度 0.0 透明 1.0 不透明
android:toAlpha="0" //Float表示 结束透明度 0.0 透明 1.0 不透明
android:duration="@android:integer/config_mediumAnimTime"//动画持续时间
/>
<scale> 渐变尺寸伸缩动画效果
例子:
<scale android:fromXScale="1.0" android:toXScale=".5" //动画开始和结束时x坐标上的伸缩尺寸 0.0 表示不伸缩 1.1 表示正常无变化
android:fromYScale="1.0" android:toYScale=".5" //动画开始和结束时y坐标上的伸缩尺寸 0.0 表示不伸缩 1.1 表示正常无变化
android:pivotX="50%p" android:pivotY="50%p" //动画相对于物件的x,y坐标开始位置 取值0%-100%. 50%
android:duration="@android:integer/config_mediumAnimTime" />
<translate> 水平和/或垂直运动
三种表示格式:
1.-100% 到 100% 相对自身的百分比
2.-100%P到100%P 相对父组件的百分比
3.folat value 没有后缀 表示绝对值
例子:
<translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="100" />
<rotate> 旋转动画
<rotate android:fromDegrees="0" //动画起始角度 负数表示逆时针 正式表示顺时针 android:toDegrees="-45" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:duration="400" />
在应用程序中应用动画
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); findViewById(R.id.pw).startAnimation(shake);
Frame Animation
语法:<?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot=["true" | "false"] > <item android:drawable="@[package:]drawable/drawable_resource_name" android:duration="integer" /> </animation-list>
<animation-list> 必须的 作为根元素 包含 一个或多个<item>
属性:
android:oneshot "true" if you want to perform the animation once; "false" to loop the animation
<item> 单独的帧动画
属性:
android:drawable
Drawable resource. The drawable to use for this frame.
android:duration
Integer. The duration to show this frame, in milliseconds.
在应用程序中应用
ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image); rocketImage.setBackgroundResource(R.drawable.rocket_thrust); rocketAnimation = (AnimationDrawable) rocketImage.getBackground(); rocketAnimation.start();
相关文章推荐
- Android画图学习总结(四)——Animation(下)
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(下)
- Android画图学习总结(四)——Animation(下)
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(下)
- Android画图学习总结(四)——Animation(中)
- Android动画学习Demo(1) 关于ViewAnimation的用法及总结
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(中)
- (转)Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(中)