码迷,mamicode.com
首页 > 移动开发 > 详细

Android--Animations的使用(一)--Tweened Animations

时间:2015-09-15 18:12:02      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

Animations的使用(一)-- 

1、什么是Animation

Animations提供了一系列的动画效果,这些效果可以应用在绝大多数的控件。

旋转,缩放,淡入淡出。可以用在大多数控件中,

2、Animations的分类

从总体上来讲分两大类:

第一类:Tweened Animations   渐变动画

该类Animations提供了旋转,移动,伸展淡入淡出等效果。

第二类:Frame-by-Frame Animations

和电影类似,电影实际上是一系列照片的组合,一系列照片滚动,利用人们视觉残留的效果。24/s张照片,就可以认为是连续的

该类Animations可以创建一个Drawable(图片)序列,这些Drawable可以按照指定的时间间隙一个一个的显示。

Tweened Animations的分类

  1. Alpha  淡入淡出效果
  2. Scale  缩放效果 
  3. Rotate 旋转效果
  4. Translate 移动效果

3、使用Tweened Animations的步骤

  1. 创建一个AnimationSet对象,     Set 这是一个集合,可以把几个动画对象放在一起,可以一遍旋转一遍移动。
  2. 根据需要创建相应的Animation对象         Animation 是一个父类,有四个子类,分别代表上面的
  3. 根据软件的动画的需求,为Animation对象设置相应的数据     运行时间,轴
  4. 将Animation对象添加到AnimationSet对象当中
  5. 使用控件对象开始执行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);      //设置动画的重复执行次数

 

技术分享

 

Android--Animations的使用(一)--Tweened Animations

标签:

原文地址:http://www.cnblogs.com/zrui513/p/4810616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!