Animations的使用(一)--
1、什么是Animation
Animations提供了一系列的动画效果,这些效果可以应用在绝大多数的控件。
旋转,缩放,淡入淡出。可以用在大多数控件中,
2、Animations的分类
从总体上来讲分两大类:
第一类:Tweened Animations 渐变动画
该类Animations提供了旋转,移动,伸展和淡入淡出等效果。
第二类:Frame-by-Frame Animations
和电影类似,电影实际上是一系列照片的组合,一系列照片滚动,利用人们视觉残留的效果。24/s张照片,就可以认为是连续的
该类Animations可以创建一个Drawable(图片)序列,这些Drawable可以按照指定的时间间隙一个一个的显示。
Tweened Animations的分类
- Alpha 淡入淡出效果
- Scale 缩放效果
- Rotate 旋转效果
- Translate 移动效果
3、使用Tweened Animations的步骤
- 创建一个AnimationSet对象, Set 这是一个集合,可以把几个动画对象放在一起,可以一遍旋转一遍移动。
- 根据需要创建相应的Animation对象 Animation 是一个父类,有四个子类,分别代表上面的
- 根据软件的动画的需求,为Animation对象设置相应的数据 运行时间,轴
- 将Animation对象添加到AnimationSet对象当中
- 使用控件对象开始执行AnimationSet
Animations的使用方法,有两大类,一类是在代码中实现,一类是在XML里面实现。
1)Alpha效果实现(淡入淡出)
private class AlphaButtonListener implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { //创建一个AnimationSet对象,这里布尔型的参数,直接设置为true就可以了 AnimationSet animationSet = new AnimationSet(true); //创建一个AlphaAnimation对象,这里1表示fromAlpha(不透明),0表示toAlpha(透明) AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0); //设置动画执行的时间(单位:毫秒) alphaAnimation.setDuration(1000); //将AlphaAnimation对象添加到AnimationSet中 animationSet.addAnimation(alphaAnimation); //使用image的方法开始执行动画 imageView.startAnimation(animationSet); } }
2)Rotate效果实现(旋转效果)
private class RotateButtonListener implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { //RotateAnimation(float fromDegrees, float toDegrees, // int pivotXType, float pivotXValue, // int pivotYType, float pivotYValue) //fromDegrees 起始角度 0就是12点钟方向。 //toDegrees 终止角度 360是一样的。 //pivotXType 旋转的轴X的坐标类型 Animation.ABSOLUTE(绝对坐标), Animation.RELATIVE_TO_SELF(坐标相对于自身), or Animation.RELATIVE_TO_PARENT(坐标相对于父控件). RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_PARENT,1f, Animation.RELATIVE_TO_PARENT,0f); } }
后面4个参数就是定义旋转的圆心。
3)Scale的缩放效果
public void onClick(DialogInterface dialog, int which) { //8个参数 //public ScaleAnimation(float fromX, float toX, float fromY,float toY, // int pivotXType, float pivotXValue, // int pivotYType, float pivotYValue) { ScaleAnimation scaleAnimation = new ScaleAnimation( 1,0.1f,1,0.1f, /**横纵坐标变到以前的0.1*/ Animation.RELATIVE_TO_SELF,0.5f, /**设置缩放的旋转轴*/ Animation.RELATIVE_TO_SELF,0.8f); }
4)translate效果实现(移动效果)
private class TranslateButtonListener implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { // public TranslateAnimation( // int fromXType, float fromXValue, 设置X方向的起始位置 // int toXType, float toXValue, 设置X方向的终止位置 // int fromYType, float fromYValue, 设置Y方向的起始位置 // int toYType, float toYValue) 设置Y方向的终止位置 TranslateAnimation translateAnimation = new TranslateAnimation( Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0f, Animation.RELATIVE_TO_SELF,1f); } }
4、AnimationSet的通用属性
AnimationSet里面有很多个Animaition
animationSet.setDuration(1000); //设置动画执行的时间 animationSet.setFillAfter(true); //动画执行完毕后,停留在控件结束的状态 animationSet.setFillBefore(false); //动画执行完毕后,停留在控件开始的状态 animationSet.setStartOffset(2000); //设置动画执行之前的等待时间 animationSet.setRepeatCount(3); //设置动画的重复执行次数
时间: 2024-10-05 05:04:45