Android Animations

来源:互联网 发布:服务器端口怎么修改 编辑:程序博客网 时间:2024/06/05 11:26


animation有两种方式来实现:1.代码;2.xml


animation分两类:
1.Tweened animations
2.frame-by-frame animations


tweened animations:
1.alpha:淡入淡出效果
2.scale:缩放效果
3.Rotate:旋转效果
4.translate:移动效果


使用步骤:
1.创建一个AnimationSet对象。
AnimationSet animationSet = new AnimationSet(true);  
这里的true是指让set里面的animation对象共享Interpolator。


2.根据需要创建对应的Animation对象。(四种子类,代表四种效果)
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);


3.根据软件动画的需求,为Animation对象设置相应的数据。
alphaAnimation.setDuration(1000);


4.将Animation对象添加到AnimationSet对象中。
animationSet.addAnimation(alphaAnimation);


5.使用控件对象开始执行AnimationSet。
imageView.startAnimation(animationSet);




public RotateAnimation (float fromDegrees, float toDegrees, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue) 
fromDegrees:开始角度。
toDegrees:结束角度
pivotXType:转轴的x坐标的类型
pivotXType:转轴的x坐标
pivotYType:转轴的y坐标的类型
pivotYType:转轴的y坐标


public AlphaAnimation (float fromAlpha, float toAlpha) 
fromAlpha:开始的可见度
toAlpha:结束的可见度


public ScaleAnimation (float fromX, float toX, float fromY, float toY, int pivotXType, float pivotXValue, int pivotYType, float pivotYValue)
fromX:开始大小(相对于自己)
toX:结束大小
fromY:开始大小
toY:结束大小
pivotXType:同上。这里确定的点是围绕哪一个点扩大或缩小


public TranslateAnimation (int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue) 
分别设置的是开始和结束的位置。


Tween Animations通用属性(Animation)
1.setDuration(long durationMills):设置动画持续时间
2.setFillAfter(boolean fillAfter):true,则控件停留在动画结束的状态
3.setFillBefore(boolean fillBefore):true,则控件停留在动画执行之前的状态
4.setStartOffSet(long startOffSet):设置动画执行之前的等待时间

5.setRepeatCount(int repeatCount):设置动画重复执行的次数



=======================================================================================


XML 方式实现动画


1.在res文件夹下新建一个anim的文件夹
2.创建xml文件,并首先加入set标签,该标签如下:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"></set>
3.在该标签当中加入rotate,alpha,scale或者translate标签
4.在代码当中使用AnimationUtils当中装在xml文件,并生成Animation对象。


代码:
Animation animation = AnimationUtils.loadAnimation(AnimationTestActivity.this, R.anim.alpha);

imageView.startAnimation(animation);


<rotate
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000"
/>
android:pivotX的值共有三种设置方法:
1.50,使用绝对为指定为
2.50%使用相对于控件本身定位
3.50%p 相对于父控件定位


<translate
android:fromXDelta="50%"  
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="2000"
/>
fromXDelta:起始位置
toXDelta:终止位置


<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="2000"/>
fromXScale:开始。x轴的100%
toXScale:结束。x轴的0%,即全无。


=============================================================

1.AnimationSet是Animation的子类
2.一个AnimationSet包含了一系列的Animation
3.针对AnimationSet设置一些Animation常见的属性,可以应用到AnimationSet里的每一个Animation对象。


interpolator
它定义了动画变化的速率。有如下几种Interpolator:
AccelerateDecelerateInterpolator:在动画开始与结束的地方速率改变比较慢,在中间的时候加速。
AccelerateInterpolator:在动画开始的地方速率改变比较慢,然后开始加速。
CycleInterpolator:动画循环播放待定的次数,速率改变沿着正弦曲线。
DecelerateInterpolator:在动画开始的地方速率变化比较快,然后开始减速。
LinearInterpolator:动画以匀速改变。


Frame-by-Frame方式:多帧动画的形式
xml文件:animlist.xml
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/xx" android:duration="500"/>
<item android:drawable="@drawable/yy" android:duration="500"/>
</animation-list>


代码:
imageView.setBackgroundResource(R.drawable.animlist);
AnimationDrawable animationDrawable =(AnimationDrawable)imageView.getBackground();
animationDrawable.start(); //启动动画,默认状态下会循环


========================================================================

LayoutAnimationController
1.用于为一个layout里面的控件或者一个ViewGroup里面的控件设置动画效果
2.每个控件都有相同的动画效果
3.这些控件的动画效果在不同的时间显示出来。比如多个控件依次显示
4.LayoutAnimationController既可以在xml文件中设置,也可以在代码中设置


在xml中使用layoutAnimationController:
1.在res/anim中创建一个新文件,名字为
list_anim_layout.xml:
<layoutAnimation
xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="0.5"
android:animationOrder="random"  
android:aniamtion="@anim/list_anim"/>      这里的list_anim是一个animationset的xml文件

order:radom,normal,reverse


2.在布局文件当中为ListView添加如下配置:
android:layoutAnimation="@anim/list_anim_layout"




在代码中使用LayoutAnimationController
1.创建一个Animation对象。可以通过装在xml文件,也可以直接使用Animation的构造函数创建Animation对象


2.创建LayoutAnimationController:
LayoutAnimationController lac = new layoutAnimationController(animation);


3.设置控件的显示顺序
lac.setOrder(LayoutAnnimationController.ORDER_NORMAL);


4.为listview设置LayoutAnimationController属性:
listView.setLayoutAnimation(lac);






AnimationListener
监听动画执行的各个阶段。


主要有三个方法:
1.onAnimationEnd(Animation a);
2.onAnimationRepeat(Animation a);
3.onAnimationStart(Aniamtion a);

原创粉丝点击