Android 补间动画TweenAnimation详解

来源:互联网 发布:c语言编程软件64位 编辑:程序博客网 时间:2024/05/22 03:47

Android动画的分类

1.补间动画(TweenAnimation)

2.帧动画(FrameAnimation)

3.属性动画(PropertyAnimation)


今天我们来介绍下补间动画TweenAnimation的使用。

Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的这么一种转换过程。我们可以以XML形式定义动画。也可以编码实现。如果以XML形式定义一个动画,我们按照动画的定义语法完成XML,并放置于/res/anim目录下。文件名可以作为资源ID被引用;如果由编码实现。我们需要使用到Animation对象。建议使用XML文件定义,因为它更具可读性、可重用性。

其中包括alpha(透明度)、scale(缩放)、translate(移动)、rotate(翻转)
对应java code:

alpha->AlphaAnimation
scale->ScaleAnimation
translate->TranslateAnimation
rotate->RotateAnimation


Animation基本属性



1,alpha动画
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <alpha        android:fromAlpha="1.0"        android:toAlpha="0.1"        android:duration="5000"        />    <!-- 透明度控制动画效果 alpha        浮点型值:            fromAlpha 属性为动画起始时透明度            toAlpha   属性为动画结束时透明度            说明:                0.0表示完全透明                1.0表示完全不透明            以上值取0.0-1.0之间的float数据类型的数字        长整型值:            duration  属性为动画持续时间            说明:                时间以毫秒为单位    --></set>
2.scale动画
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale        android:duration="700"        android:fillAfter="false"        android:fromXScale="0.0"        android:fromYScale="0.0"        android:interpolator="@android:anim/accelerate_decelerate_interpolator"        android:pivotX="50%"        android:pivotY="100%"        android:toXScale="1.4"        android:toYScale="1.4" />    <!-- 尺寸伸缩动画效果 scale               属性:interpolator 指定一个动画的插入器                在我试验过程中,使用android.res.anim中的资源时候发现                有三种动画插入器:                    accelerate_decelerate_interpolator  加速-减速 动画插入器                    accelerate_interpolator         加速-动画插入器                    decelerate_interpolator         减速- 动画插入器                其他的属于特定的动画效果              浮点型值:                    fromXScale 属性为动画起始时 X坐标上的伸缩尺寸                    toXScale   属性为动画结束时 X坐标上的伸缩尺寸                    fromYScale 属性为动画起始时Y坐标上的伸缩尺寸                    toYScale   属性为动画结束时Y坐标上的伸缩尺寸                    说明:                         以上四种属性值                            0.0表示收缩到没有                            1.0表示正常无伸缩                            值小于1.0表示收缩                            值大于1.0表示放大                    pivotX     属性为动画相对于物件的X坐标的开始位置                    pivotY     属性为动画相对于物件的Y坐标的开始位置                    说明:                            以上两个属性值 从0%-100%中取值                            50%为物件的X或Y方向坐标上的中点位置                长整型值:                    duration  属性为动画持续时间                    说明:   时间以毫秒为单位                布尔型值:                    fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用        --></set>
3.translate动画
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate        android:duration="2000"        android:fromXDelta="30"        android:fromYDelta="30"        android:toXDelta="-80"        android:toYDelta="300" />    <!-- translate 位置转移动画效果            整型值:                fromXDelta 属性为动画起始时 X坐标上的位置                toXDelta   属性为动画结束时 X坐标上的位置                fromYDelta 属性为动画起始时 Y坐标上的位置                toYDelta   属性为动画结束时 Y坐标上的位置                注意:                         没有指定fromXType toXType fromYType toYType 时候,                         默认是以自己为相对参照物            长整型值:                duration  属性为动画持续时间                说明:   时间以毫秒为单位    --></set>
4.rotate动画
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <rotate        android:duration="3000"        android:fromDegrees="0"        android:interpolator="@android:anim/accelerate_decelerate_interpolator"        android:pivotX="50%"        android:pivotY="50%"        android:toDegrees="+350" />    <!-- rotate 旋转动画效果           属性:interpolator 指定一个动画的插入器                 在我试验过程中,使用android.res.anim中的资源时候发现                 有三种动画插入器:                    accelerate_decelerate_interpolator    加速-减速 动画插入器                    accelerate_interpolator                加速-动画插入器                    decelerate_interpolator                减速- 动画插入器                 其他的属于特定的动画效果           浮点数型值:                fromDegrees 属性为动画起始时物件的角度                toDegrees   属性为动画结束时物件旋转的角度 可以大于360度                说明:                         当角度为负数——表示逆时针旋转                         当角度为正数——表示顺时针旋转                         (负数from——to正数:顺时针旋转)                         (负数from——to负数:逆时针旋转)                         (正数from——to正数:顺时针旋转)                         (正数from——to负数:逆时针旋转)                pivotX     属性为动画相对于物件的X坐标的开始位置                pivotY     属性为动画相对于物件的Y坐标的开始位置                说明:        以上两个属性值 从0%-100%中取值                             50%为物件的X或Y方向坐标上的中点位置            长整型值:                duration  属性为动画持续时间                说明:       时间以毫秒为单位    --></set>

在代码中通过AnimationUtils调用。
Animation animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha);show.startAnimation(animation);

几种类型动画组合使用
Animation animation1 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.rotate);Animation animation2 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha);Animation animation3 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.translate);Animation animation4 = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale);AnimationSet animationSet = new AnimationSet(true);animationSet.addAnimation(animation1);animationSet.addAnimation(animation2);animationSet.addAnimation(animation3);animationSet.addAnimation(animation4);show.startAnimation(animationSet);
当然你也可以用组合的方式在xml中将4个动画写在同一个set标签下面。像这样:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <scale        />    <alpha        />    <rotate        />    <translate        /></set>

AnimationSet继承自Animation是上面四种的组合容器管理类,没有自己特有的属性。他的属性继承自Animation所以特别注意。当我们对set标签使用Animation的属性时会对该标签下的所有子控件都产生影响。



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 房贷逾期还款怎么办 网被垄断了怎么办? 百度搜索网页打不开怎么办? 原生家庭很糟糕怎么办 白色油漆变黄怎么办 白油漆家具泛黄怎么办 交通电子眼60分怎么办 被公司罚款了怎么办 公司对员工罚款怎么办 高一军训洗漱怎么办 吃精神病药发胖怎么办 神经病人不吃药怎么办 事故全责不赔钱怎么办 吃精神药物发胖怎么办 郑州出院限号怎么办 林场改革森林消防怎么办 网络课没有看完怎么办 福建省会计证未换怎么办 国税地税登记后怎么办 网上发票领不了怎么办 合肥餐饮怎么办环评 地税财务报表上传错误怎么办? 平安体检卡过期怎么办 到医院挂号后怎么办 一吹风就头痛怎么办 平安口袋e怎么办离职 学员学分卡号怎么办 华医网注册错了怎么办 医师继续教育学分不够怎么办 执业医师学分卡怎么办 护士学分5年没办怎么办 华医网职称录入错误怎么办 在北京没有学历怎么办 继续教育证书丢了怎么办 继续教育证丢了怎么办 继续教育档案丢了怎么办 现在会计证丢了怎么办 初级准考证丢了怎么办 协助调查48小时怎么办 有个抑郁症父亲怎么办 法院不给立案怎么办