以前是搞cocos开发的,知道动画分为帧动画和骨骼动画。
帧动画是做很多张连续的图片,然后一张一张的播放,只要一秒超过30张看起来就挺流畅了
骨骼动画是用工具编辑好骨骼的位置,然后导出文件就可以了。
这是制作的方法,帧动画占内存,骨骼动画占cpu,骨骼动画的效果也比较好,有点扯远了。。。回归正题:
android中总共分为3种动画:
1View Animation :(tween动画)视图动画在古老的Android版本系统中就已经提供了,只能被用来设置View的动画。
2Drawable Animation : (也叫Frame动画、帧动画)其实可以划分到视图动画的类别,专门用来一个一个的显示Drawable的resources,就像放幻灯片一样。
3Property Animation : 属性动画只对Android 3.0(API 11)以上版本的Android系统才有效,这种动画可以设置给任何Object,包括那些还没有渲染到屏幕上的对象。这种动画是可扩展的,可以让你自定义任何类型和属性的动画。
首先是view Animation:
view动画由如下几种:
首先看看他们共有的属性:
下面是每种补间动画特有的属性
1 Alpha属性详解
2 Rotate属性:
3 Scale属性:
4 Translate属性:
5 AnimationSet属性:
AnimationSet是所有补间动画的集合容器,在这里做的修改是会影响容器内的所有动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<!--<rotate-->
<!--android:fromDegrees="20"-->
<!--android:toDegrees="80"-->
<!--android:pivotX="50%"-->
<!--android:pivotY="50%">-->
<!--</rotate>-->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:fromAlpha="0.5"
android:toAlpha="1"
android:duration="3000"
android:interpolator="@android:anim/linear_interpolator"
android:repeatCount="10"
/>
<scale
android:fromXScale="1"
android:toXScale="5"
android:duration="3000"
android:fromYScale="1"
android:toYScale="5"
android:interpolator="@android:anim/linear_interpolator"/>
<translate
android:fromXDelta="50%"
android:toXDelta="200%" android:interpolator="@android:anim/linear_interpolator">
</translate>
</set>
//播放动画的代码
TextView txt_hello = (TextView)findViewById(R.id.txt_hello);
Animation animation = AnimationUtils.loadAnimation(_ctx,R.anim.viewanim);
txt_hello.startAnimation(animation);
在实验的时候遇到几个问题:
1 如果没有使用插值器的时候,动画效果体现不出来,只是闪一下而已
2 如果scale动画只写了x轴的时候,控件也只是闪一下而已,并不会出现放大缩小的动画
3 如果只有一种类型的动画定义多次播放动画,那么另外的动画会保持种动画最后的效果,然后继续播放定义多次播放的那个动画
4 set里面的动画是一起播放的,
5 setAnimationListener设置动画回调,包括开始,结束,重复
6 特别特别注意:补间动画执行之后并未改变View的真实布局属性值。切记这一点,譬如我们在Activity中有一个Button在屏幕上方,我们设置了平移动画移动到屏幕下方然后保持动画最后执行状态呆在屏幕下方,这时如果点击屏幕下方动画执行之后的Button是没有任何反应的,而点击原来屏幕上方没有Button的地方却响应的是点击Button的事件。
主要引用了http://blog.csdn.net/yanbober/article/details/46481171
http://blog.csdn.net/ithomer/article/details/7523328
这两篇文章