Android动画

  Android JDK为我们提供了4种动画效果,分别是: AlphaAnimation,RotateAnimationScaleAnimationTranslateAnimation. 今天我想讲解的是TranslateAnimation这个动画效果。也是本人在做一个移动图片的动画效果的项目时,遇到了一些问题。在网上查了很多资 料,搞了好几天。终于明白怎么使用这个TranslateAnimation,在本文中记录下来,以便以后忘记了可以查阅。

  TranslateAnimation是移动的动画效果。它有三个构造函数,分别是:

  1.public  TranslateAnimation(Context context,AttributeSet attrs)   略过

  2.public  TranslateAnimation(float fromXDelta, float toXDelta, float fromYDelta, float toYDelta)

  这个是我们最常用的一个构造方法,

  float fromXDelta:这个参数表示动画开始的点离当前View X坐标上的差值;

  float toXDelta, 这个参数表示动画结束的点离当前View X坐标上的差值;

  float fromYDelta, 这个参数表示动画开始的点离当前View Y坐标上的差值;

  float toYDelta)这个参数表示动画开始的点离当前View Y坐标上的差值;

  如果view在A(x,y)点 那么动画就是从B点(x+fromXDelta, y+fromYDelta)点移动到C 点(x+toXDelta,y+toYDelta)点.


  3.public  TranslateAnimation (int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)

  fromXType:第一个参数是x轴方向的值的参照(Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF,or Animation.RELATIVE_TO_PARENT);

  fromXValue:第二个参数是第一个参数类型的起始值;

  toXType,toXValue:第三个参数与第四个参数是x轴方向的终点参照与对应值;

  后面四个参数就不用解释了。如果全部选择Animation.ABSOLUTE,其实就是第二个构造函数。

      以x轴为例介绍参照与对应值的关系:

      如果选择参照为Animation.ABSOLUTE,那么对应的值应该是具体的坐标值,比如100到300,指绝对的屏幕像素单位

      如果选择参照为Animation.RELATIVE_TO_SELF或者 Animation.RELATIVE_TO_PARENT指的是相对于自身或父控件,对应值应该理解为相对于自身或者父控件的几倍或百分之多少。多试参数就明白了。

 

 

 

 

 

 

 

 

 

 一、代码实现图片动画效果
1、Alpha图片的渐变效果
代码实例:
// 创建AnimationSet对象
AnimationSet animationSet = new AnimationSet(true);
// 创建AlphaAnimation对象,第一个参数为从透明度为1(不透明)到0(完全透明)渐变
AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
// 设置动画执行的时间
alphaAnimation.setDuration(1000);
// 添加AlphaAnimation对象到AnimationSet集合
animationSet.addAnimation(alphaAnimation);
// 将动画使用到imageview
imageview.startAnimation(animationSet);
2、Scale图片的缩放效果
代码实例:
// 创建AnimationSet对象
AnimationSet animationSet = new AnimationSet(true);
// 创建ScaleAnimation对象
ScaleAnimation scaleAnimation = new ScaleAnimation(
1, 0.1f,// X坐标开始缩放的大小和缩到的大小
1, 0.1f,// Y坐标开始缩放的大小和缩到的大小
Animation.RELATIVE_TO_SELF, 0.5f,// 缩放中心的X坐标类型和坐标
Animation.RELATIVE_TO_SELF, 0.5f);// 缩放中心的Y坐标的类型和坐标
// 设置动画执行的时间
scaleAnimation.setDuration(2000);
// 将ScaleAnimation对象添加到AnimationSet
animationSet.addAnimation(scaleAnimation);
// 将动画使用到imageview
imageview.startAnimation(animationSet);
3、Rotate图片的旋转效果
代码实例:
// 创建AnimationSet对象
AnimationSet animationSet = new AnimationSet(true);
// 创建RotateAnimation对象
RotateAnimation rotateAnimation = new RotateAnimation(
0,// 图片从哪开始旋转
360,// 图片旋转多少度
Animation.RELATIVE_TO_PARENT, 1f,// 定义图片旋转X轴的类型和坐标
Animation.RELATIVE_TO_PARENT, 0f);// 定义图片旋转Y轴的类型和坐标
// 设置动画执行的时间
rotateAnimation.setDuration(5000);
// 将RotateAnimation对象添加到AnimationSet
animationSet.addAnimation(rotateAnimation);
// 将动画使用到ImageView
imageview.startAnimation(animationSet);
4、Translate图片的移动效果
代码实例:
// 创建AnimationSet对象
AnimationSet animationSet = new AnimationSet(true);
//创建TranslateAnimation对象
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0f,//图片开始移动的X轴的类型和坐标
Animation.RELATIVE_TO_SELF,1f, //图片移动结束的X轴的类型和坐标
Animation.RELATIVE_TO_SELF, 0f,//图片开始移动的Y轴的类型和坐标
Animation.RELATIVE_TO_SELF, 1f);//图片移动结束的Y轴的类型和坐标
//设置动画执行的时间
translateAnimation.setDuration(2000);
//将translateAnimation对象添加到AnimationSet
animationSet.addAnimation(translateAnimation);
//将动画的集合使用到ImageView
imageview.startAnimation(animationSet);
二、xml描述图片动画效果
1、创建anim文件夹到res(res/anim)
2、在anim文件夹中创建xml描述文件(animation.xml)
跟标签:
set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
/set
在跟标签内部编写动画的描述
(1)、图片的渐变效果
alpha 
android:fromAlpha="1.0"//图片从透明度多少开始渐变,1为完全不透明
android:toAlpha="0.0"//图片渐变到什么透明度结束,0为完全透明
android:startOffset="500"//停留多长时间,开始执行动画,毫秒为单位
android:duration="500" //动画在多长时间执行完成
/
(2)、图片的缩放效果
scale 
android:fromXScale="1.0"//图片X轴从多大开始缩放,1为原本的大小 
android:toXScale="0.0"//图片X轴缩放到多大结束,0为没有
android:fromYScale="1.0"//图片Y轴从多大开始缩放,1为原本大小
android:toYScale="0.0" //图片Y轴缩放大多大结束,0为没有
android:pivotX="50%"//图片缩放的中心,X轴坐标,50为绝对定位,50%为图片自身的一半,50%P为窗体的一半
android:pivotY="50%" //图片缩放的中心,Y轴坐标
android:duration="2000"//动画效果执行的时间
/
(3)、图片的旋转效果
rotate 
android:fromDegrees="0"//图片的开始位置,0为当前位置
android:toDegrees="360"//图片旋转多少度,360为一圈
android:pivotX="50%"//图片的旋转中心,X轴的坐标
android:pivotY="50%"//图片的旋转中心,Y轴的坐标
android:duration="5000" //图片的动画执行时间
/
(4)、图片的移动效果
translate 
android:fromXDelta="50%"//图片开始移动的X轴的坐标
android:toXDelta="100%" //图片移动结束的X轴的坐标
android:fromYDelta="0%" //图片开始移动的Y轴的坐标
android:toYDelta="100%" //图片移动结束的Y轴的坐标
android:duration="2000" //图片动画执行的时间 
/
3、在代码中得到图片动画效果的描述文件
//使用AnimationUtils装载动画设置文件
Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.animation);
//降动画设置到ImageView控件,启动动画
imageView.startAnimation(animation);
三、图片的连续显示
1、把需要连续现实的图片放入drawable文件夹
2、创建anim_nv.xml文件到drawable文件夹,描述要循环显示的图片和时间
例:
?xml version="1.0" encoding="utf-8"?
animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"
 
item android:drawable="@drawable/icon" android:duration="500" /
item android:drawable="@drawable/grid" android:duration="500" /
/animation-list
3、代码的编写
//设置图片源
imageView.setBackgroundResource(R.drawable.anim_nv);
//强制转换类型
AnimationDrawable animationDrawable = (AnimationDrawable)imageView.getBackground();
//启动图片连续播放
animationDrawable.start();
四、LayoutAnimationController界面动画
(一)、xml的实现方法
1、在res下创建目录anim,编写动画的xml描述文件
例:alpha.xml

set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"

alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
/
/set
2、在res/anim目录下创建LayoutAnimationController的xml描述文件
?xml version="1.0" encoding="utf-8"?
layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="2"//动画隔多长时间执行下一个,2为2秒
android:animationOrder="normal"//动画执行的顺序,normal为顺序显示,random为随机显示
android:animation="@anim/alpha"// 设置动画的效果xml 
/
3、在界面布局中设置LayoutAnimationController动画
以ListView控件为例:
ListView
android:id="@+id/listview"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:layoutAnimation="@anim/layout_anim"
/
(二)、代码的实现方法
1、在res下创建目录anim,编写动画的xml描述文件
例:alpha.xml
?xml version="1.0" encoding="utf-8"?
set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator"
alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="2000"
/
/set
2、代码中使用LayoutAnimationController动画
//得到Animatiom动画
Animation animation = AnimationUtils.loadAnimation(MainActivity.this,R.anim.alpha);
//创建LayoutAnimationController对象,将动画设置给LayoutAnimationController
LayoutAnimationController lac = new LayoutAnimationController(animation);
//设置动画显示的顺序
lac.setOrder(LayoutAnimationController.ORDER_NORMAL);
//设置下一个动画执行的时间,1为1秒
lac.setDelay(1);
//将布局动画设置到ListView控件
listview.setLayoutAnimation(lac);

你可能感兴趣的:(动画,android,是)