android动画要点,写给自己看,都是读过来的。

animation.xml  这个东西挺多的,记一下,有两大类动画:


第一类动画:

Tween Animation:图像变换(透明度、平移、缩放、旋转)
Alpha:透明度渐变
Scale:尺寸伸缩渐变
Translate:画面位置移动
Rotate:画面位置旋转

有一下的节点属性:
Duration:动画的持续时间,以毫秒为单位
interpolator:动画的插入器
fillAfter:动画的最后状态得以保持
fillBefore:
repeatCount:动画的重复次数
repeatMode:动画的重复行为 1,2
startOffset:动画之间的间隔

详述一下动画的插入器,interpolator定义一个动画的变化率,也就是控制动画的速率:
AccelerateDecelerateInterpolator:在动画开始与介绍的地方速率改变比较慢,在中间的时候加速
AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速
CycleInterpolator: 动画循环播放特定的次数,速率改变沿着正弦曲线
DecelerateInterpolator: 在动画开始的地方速率改变比较慢,然后开始减速
LinearInterpolator: 在动画的以均匀的速率改变
 

以下是四种的例子:

<alpha
android:fromAlpha="0.1"
android:toAlpha="1.0"
android:duration="3000"
/>
fromAlpha和toAlpha定义动画开始和结束时候的透明度,为float型。
0.0表示完全透明,1.0表示完全不透明

<scale
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1"
android:fromYScale="0.0"
android:toYScale="1"
android:pivotX="200%"
android:pivotY="200%"
android:fillAfter="true"
android:startOffset="700"
android:duration="7000"
android:repeatCount="2"
/>

fromXScale和fromYScale是初始状态下,x和y坐标的伸缩尺寸
toXScale和toYScale是结束状态下,x和y坐标的伸缩尺寸。
上述动画的意思就是图片一开始是相当于一个点,最后变成了伸展2倍的大小。
pivotX和pivotY是动画的发起点相对于控件的位置,注意不是相对于图片,fitXY和fitCenter可以看出。
startOffset是指动画间间隔,repeatCount是指动画重复播放的次数,这两货成对出现,不重复就不要使用offset。
pivotX和pivotY值如果超过100,它对应的scale就会有变化,距离同时也要变为两倍。

<translate
android:fromXDelta="0"
android:toXDelta="100"
android:fromYDelta="0"
android:toYDelta="100"
android:duration="2000" />

fromXDelta和fromYDelta为动画的起始位置,toXDelta和toYDelta为动画的终止位置

<rotate
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />

fromDegrees是指动画开始时,图片的角度。
toDegrees是指动画结束时,图片的角度,可以超过360。
当角度为负数——表示逆时针旋转
当角度为正数——表示顺时针旋转
(负数from——to正数:顺时针旋转)
(负数from——to负数:逆时针旋转)
(正数from——to正数:顺时针旋转)
(正数from——to负数:逆时针旋转)
pivotX和pivotY是指动画相对于图片的起始位置,即图片绕着这个点的轴转。

第二类动画:
Frame Animation 顺序一帧一帧地播放图片,类似于幻灯片,电影。

它的属性值如下:
drawable 当前帧引用的drawable资源
duration 当前帧显示的时间(毫秒为单位)
oneshot 如果为true,表示动画只播放一次停止在最后一帧上,如果设置为false表示动画循环播放。
variablePadding
visible 规定drawable的初始可见性,默认为flase;

<animation-list xmlns:android= "http://schemas.android.com/apk/res/android"
androidoneshot="true">
<item android:drawable= "@drawable/image1" android:duration="200" />
<item android:drawable= "@drawable/image2" android:duration="200" />
<item android:drawable= "@drawable/image3" android:duration="200" />
</animation-list>
其中image123是对应的图片文件,这个动画是顺序播放这三张frame.xml,每帧时间200毫秒

调用frame动画的方式与tween不同,

tween的调用方式是:


Animation anim = AnimationUtils.loadAnimation(context, R.layout.e_anim);//anim在res/layout文件夹下
layout.startAnimation(anim);

而在frame中是这样调用的,在Oncreate方法中,
ImageView image = (ImageView) findViewById (R.id.rocket_image);
image.setBackgroundResource(R.anim.frame);
AnimationDrawable mAnimation = (AnimationDrawable) image.getBackground();

public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mAnimation.start();
return true;
}
return super.onTouchEvent(event);
}
注:
启动Frame Animation动画的代码rocketAnimation.start();不能在OnCreate()中,
因为在OnCreate()中 AnimationDrawable还没有完全的与ImageView绑定,
在OnCreate()中启动动画,就只能看到第一张图片。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值