Android中定义动画

在Android开发中为了提升界面的用户体验,经常需要使用动画效果,在Android中提供了很多动画效果,如:旋转动画、透明度、位置变换、大小变换等动画效果。这些效果在Android中都是通过XML文件进行定义的,具体的查看正文。

在Android开发中为了提升界面的用户体验,经常需要使用动画效果,在Android中提供了很多动画效果,如:旋转动画、透明度、位置变换、大小变换等动画效果。这些效果在Android中都是通过XML文件进行定义的,下面将详细讲解。

1、用XML创建动画的步骤

第一步、打开Eclipse,新建Android工程

第二步、在res目录中新建anim文件夹

第三步、在anim目录中新建一个myanim.xml ( 注意文件名小写 )

第四步、加入XML的动画代码

<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="https://schemas.android.com/apk/res/android">
    <alpha />          <!--  透明度控制 --> 
    <scale />           <!-- 尺寸伸缩 --> 
    <translate />     <!-- 位置转移动 --> 
    <rotate />         <!-- 旋转动画 --> 
</set>

2、XML标签详解

2.1 <alpha> 标签(控制透明度)

<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="https://schemas.android.com/apk/res/android" >
<alpha
    android:fromAlpha="0.1"
    android:toAlpha="1.0"
    android:duration="3000" />
</set>

属性说明:

fromAlpha   属性为动画起始时透明度

toAlpha     属性为动画结束时透明度

说明: 

     0.0 表示完全透明

     1.0 表示完全不透明

(以上值取0.0-1.0之间的float数据类型的数字)

duration    属性为动画持续时间(长整型值)

说明: 时间以毫秒为单位 

2.2 <scale> 标签(控制尺寸伸缩)

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="https://schemas.android.com/apk/res/android">
<scale
    android:interpolator= "@android:anim/accelerate_decelerate_interpolator"
    android:fromXScale="0.0"
    android:toXScale="1.4"
    android:fromYScale="0.0"
    android:toYScale="1.4"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fillAfter="false"
    android:duration="700" />
</set>

属性说明:

interpolator  指定一个动画的插入器,在我试验过程中,使用android.res.anim中的资源时候发现 

有三种动画插入器:

    a、accelerate_decelerate_interpolator  加速-减速 动画插入器

    b、accelerate_interpolator             加速-动画插入器

    c、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,该动画转化在动画结束后被应用 (布尔型值)

2.3 <translate>标签(位置转移) 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="https://schemas.android.com/apk/res/android">
<translate
    android:fromXDelta="30"
    android:toXDelta="-80"
    android:fromYDelta="30"
    android:toYDelta="300"
    android:duration="2000"  /> 
</set>

属性说明:

fromXDelta     属性为动画起始时 X坐标上的位置 (整型值)

toXDelta       属性为动画结束时 X坐标上的位置 (整型值)

fromYDelta     属性为动画起始时 Y坐标上的位置 (整型值)

toYDelta       属性为动画结束时 Y坐标上的位置 (整型值)

注意: 没有指定fromXType、toXType、fromYType、toYType 时候,默认是以自己为相对参照物

duration       属性为动画持续时间 (长整型值)

说明: 时间以毫秒为单位

 

2.4 <rotate>标签(控制旋转) 

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="https://schemas.android.com/apk/res/android">
<rotate 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator"
    android:fromDegrees="0"
    android:toDegrees="+350"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="3000" />
</set>

属性说明:

interpolator   指定一个动画的插入器

有三种动画插入器:

    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        属性为动画持续时间

说明: 时间以毫秒为单位

3、用java代码调用动画文件

Button button = (Button)findViewById(R.id.ok)
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
    Animation animation = AnimationUtils.loadAnimation(HelloActivity.this, R.anim.buttonain);
        findViewById(R.id.listView).startAnimation( animation );
    }
});
时间是一切财富中最宝贵的财富。 —— 德奥弗拉斯多
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号