android之Tween动画分析
Android动画有两种:
1,Tween动画,通过对 View 的内容进行一系列的图形变换 (包括平移、缩放、旋转、改变透明度)来实现动画效果。动画效果的定义可以采用XML来做也可以采用编码来做;
2,Frame动画,即顺序播放事先做好的图像,跟放胶片电影类似。
(1)把准备好的图片放进项目res/ drawable下。
(2)在项目的res目录下创建文件夹anim,然后在anim文件夹下面定义动画XML文件,文件名称可以自定义。当然也可以采用编码方式定义动画效果(使用AnimationDrawable类)。
(3)为View控件绑定动画效果。调用代表动画的AnimationDrawable的start()方法开始动画。
(1)把准备好的图片放进项目res/ drawable下。
(2)在项目的res目录下创建文件夹anim,然后在anim文件夹下面定义动画XML文件,文件名称可以自定义。当然也可以采用编码方式定义动画效果(使用AnimationDrawable类)。
(3)为View控件绑定动画效果。调用代表动画的AnimationDrawable的start()方法开始动画。
定义动画简单2步骤:
1,res文件下建动画文件anim,然后建动画xml,比如scale.xml;
2,代码直接调用xml布局文件,形成动画;
今天讲下Tween的4种动画用法:
1,渐变尺寸缩放效果动画,如果用代码定义动画需要使用的类:ScaleAnimation
布局代码:
<span style="font-size:14px;"><!-- 缩放动画 -->
<scale
android:duration="1000"
android:fillAfter="false"
android:fromXScale="0.0"
android:fromYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" /></span>
说明:
duration: 动画时长
fromXScale: 动画起始X坐标
fromYScale: 动画起始Y坐标
toXScale:动画结束X坐标
toYScale:动画结束Y坐标
0.0表示收缩到没有,1.0表示正常无收缩
值小于0表示收缩,大于1.0表示放大
pivotX: 动画相对于物件的X坐标的开始位置
pivotY: 动画相对于物件的X坐标的开始位置 这两个坐标可以理解成是一个中心点,动画的中心点
从0%-100%中取值 50%为物件的X或Y方向坐标上的中点位置
fillAfter(布尔型)属性当设置为true,该动画转化在动画结束后被应用
代码调用布局动画:
<span style="font-size:14px;">// scale缩放动画
ImageView mImageView = (ImageView) findViewById(R.id.imageView);
// 加载动画
Animation mAnimation = AnimationUtils.loadAnimation(this, R.anim.scale);
// 执行动画
mImageView.startAnimation(mAnimation);</span>
2,渐变透明度动画,如果用代码定义动画需要使用的类:AlphaAnimation
布局代码:
<span style="font-size:14px;"> <!-- 透明动画 -->
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.6" /></span>
说明:
duration: 动画时长
fromAlpha: 动画起始透明度
toAlpha: 动画结束透明度
1.0表示无透明,0.0完全透明
代码调用如上一样,在此省略...
3,画面移动动画,如果用代码定义动画需要使用的类:TranslateAnimation
布局代码:
<span style="font-size:14px;"> <!-- 移动动画 -->
<translate
android:duration="1000"
android:fromXDelta="0"
android:fromYDelta="0"
android:repeatCount="1"
android:toXDelta="120"
android:toYDelta="120" /></span>
说明:
duration: 动画时长
fromXDelta:动画起始X坐标
fromYDelta: 动画起始Y坐标
toXDelta: 动画结束X坐标
toYDelta: 动画结束Y坐标
repeatCount: 动画重复次数
代码调用如上一样,在此省略...
4,画面移动动画,如果用代码定义动画需要使用的类:
RotateAnimation
布局代码:
<rotate
android:duration="1000"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="1"
/>
说明:
duration: 动画时长
fromDegress: 动画起始角度
toDegress: 动画结束角度
(负数fromDegrees——toDegrees正数:顺时针旋转)
(负数fromDegrees——toDegrees负数:逆时针旋转)
(正数fromDegrees——toDegrees正数:顺时针旋转)
(正数fromDegrees——toDegrees负数:逆时针旋转)
(负数fromDegrees——toDegrees负数:逆时针旋转)
(正数fromDegrees——toDegrees正数:顺时针旋转)
(正数fromDegrees——toDegrees负数:逆时针旋转)
pivotX: 动画相对于物件的X坐标
pivotY: 动画相对于物件的Y坐标
以上两个属性值 从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
repeatCount: 动画重复次数