Android-Animation动画之Tween Animation补间动画

Animation分为:

1.Tween Animation 补间动画

2.Frame Animation 帧动画


不管补间动画还是帧动画,都可以通过java代码或者xml文件来描述,然后自然是使用java代码来使用动画(赋给控件、开始、停止等)。一般使用xml文件描述方式,便于维护。


动画的描述最终都是通过实例化为Animation或者AnimationDrawable这两个类。而具体就是关于实例化这两个类的种种方式了。获得Animation实例的方式:


XML配置方式

当然,虽说是Xml方式,实际上是xml和java代码结合的方式,只不过动画的部分使用xml描述,一般java代码使用AnimationUtils类的静态方法loadAnimation即可实例化一个动画。比如:

Animation alphaAnima = AnimationUtils.loadAnimation(MainActivity.this, R.anim.alpha);
			alphaAnima.setFillAfter(true);
			areaTxv.setAnimation(alphaAnima);
至于配置文件,就是上面的那个R.anim.alpha,先在res下创建一个名为anim的文件夹,在anim文件夹下创建一个名为alpha的xml文件,下面就讲xml文件的内容。

xml文件又分为

先讲讲配置文件中的几个重要的参数,

fromXDelta:可以有三种格式表示,"70%"表示相对于控件本身正X轴方向70%的位置,"70%p"表示在父控件正X轴方向70%的位置,"70.6"表示相对于控件本身在正X轴上的坐标70.6。负数及toXDelta,fromYDelta等几个参数与其类似。

fromAlpha:浮点型,0表示完全透明,1表示完全不透明

fromDegrees:浮点型,动画开始时的角度。任意浮点值,可正可负,可大于360。45表示顺时针方向45度,-270表示逆时针方向270度。

pivotX:浮点型或百分比,表示旋转中心的X轴坐标,该值相对于控件自身坐标。30表示在控件正X轴30个像素的地方,25%表示在控件正X轴25%的地方。跟pivotX一样,默认是0(控件原点)。

fromXScale:浮点型,动画开始时,x轴方向相对于控件本身的缩放长度,1.0代表和控件一样,0.3代表0.3倍,2代表2倍。

fillAfter:布尔型,true表示动画结束时,保持控件的显示。

fillBefore:布尔型,表示动画开始前,是否显示控件。在立即执行的动画里,看不出什么不一样,但在延时开始的动画里,会看到在动画执行前,会先绘制显示该控件。

该设置只在链式动画中生效(chain animations),对单个控件动画不会生效。

默认true(fillEnabled未设为true的前提下)

fillEnabled:布尔型,这个跟fillBefore都没在chain animations中试过,暂时都不大清楚真正的效果,在单个动画里设和不设好像都一样。到后面如果试了chain animations再补充吧

startOffset:毫秒值,动画开始的时间。

interpolator:插补资源。它指定一个应用与动画的插补器。这个值必须引用特定的插补器资源(不是插补器类名)。

可以利用来自平台的默认的插补器资源,也能够创建自己的插补器资源。

shareInterpolator:布尔值,如果要在所有的子元素中共享插补器,就要设置为”true”。

注意:动画移动的只是控件的视觉效果,控件本身并没有移动,包括点击的区域等属性都将保持在原先的地方。所以动画开始时都是从(0,0)位置开始执行,不管之前有没有动画将原先的控件移到别的地方。如果要接着上一个动画执行下一个动画,应该用一个连续的动画一次性完成,或者考虑其它方式实现动画(这里与animation对象有没有关系,能不能加以使用?这个没有深入测试,但animation对象好像并未提供更多的方法,有没有子类或者其它高级的东西,还望各位给予补充)。另外,在一个动画结束后,会刷一下该控件的视图,之前的那些旧动画的视图会被清除。


具体例子如下:

a.位移动画:

<?xml version="1.0" encoding="utf-8"?>
<set
	xmlns:android="http://schemas.android.com/apk/res/android">
	<translate
		android:fromYDelta="-100%p"
		android:toYDelta="0"
		android:duration="200"/>
</set>
b.渐变:

<?xml version="1.0" encoding="utf-8"?>
<set
	xmlns:android="http://schemas.android.com/apk/res/android">
	<alpha
		android:fromAlpha="0"
		android:toAlpha="1"
		android:duration="500"/>
</set>

c.旋转:

(围绕控件的中心逆时针旋转45度)

<?xml version="1.0" encoding="utf-8"?>
<set
        xmlns:android="http://schemas.android.com/apk/res/android">
        <rotate
                 android:fromDegrees="0"
                 android:toDegrees="-45"
                 android:pivotX="50%"
                 android:pivotY="50%"
                 android:duration="3000"/>
</set>
d.缩放

前四个参数必须都有,当然,正常使用的话duration也是要有的

<?xml version="1.0" encoding="utf-8"?>
<set
	xmlns:android="http://schemas.android.com/apk/res/android">
	<scale
		android:fromXScale="0.3"
		android:toXScale="2"
		android:fromYScale="1"
		android:toYScale="3"
		android:pivotX="50%"
		android:pivotY="0.9"
		android:duration="1000"/>
</set>

代码方式:

和xml文件方式类似,只是xml的动画描述在java代码里编写,动画加载、使用方式和上面的xml方式一样。

只需要在创建Animation实例的时候new 它的子类就可以了。比如:AlphaAnimation、ScaleAnimation、TranslateAnimation、RotateAnimation等。在构造器中传入那些本必须在xml文件中设置的参数。

Aniamtion animation_Scale =new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);

代码下载:

http://download.csdn.net/detail/wzg_1987/5474453



相关参考: http://blog.csdn.net/fireofstar/article/details/7471074

http://blog.csdn.net/fireofstar/article/details/7471982


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值