Android animation

来源:互联网 发布:c语言volatile 寄存器 编辑:程序博客网 时间:2024/04/29 23:46

完成动画步骤:

  1. 创建AnimationSet对象
  2. 根据需要创建相应的Animation对象
  3. 根据对动画的需求,为Animation对象设置相应的数据
  4. Animation对象添加到AnimationSet对象中
  5. 使用控件对象开始执行AnimationSet

代码实现动画效果

1、设置xml

2、编写java文件

/*     *    旋转的x轴类型(三种):     *      1. ABSOLUTE          : 绝对值     *      2. RELATIVE_TO_SELF  : 相对于自身     *      3. RELATIVE_TO_PARENT: 相对于父控件     **/    private class RotateButtonListener implements View.OnClickListener {        @Override        public void onClick(View view) {            AnimationSet animationSet = new AnimationSet(true);            RotateAnimation rotateAnimation = new RotateAnimation(0, 360,//旋转0~360度,0为12点钟方向                    Animation.RELATIVE_TO_PARENT, 1f,        //旋转的x轴类型,具体x的值——1f为整个父控件的宽                    Animation.RELATIVE_TO_PARENT, 0f);       //旋转的y轴类型,y值            rotateAnimation.setDuration(2000);               //持续时间            animationSet.addAnimation(rotateAnimation);      //RotateAnimation加入到AnimationSet            imageView.startAnimation(animationSet);        }    }    /*     *   缩小     **/    private class ScaleButtonListener implements View.OnClickListener {        @Override        public void onClick(View view) {            AnimationSet animationSet = new AnimationSet(true);            ScaleAnimation scaleAnimation = new ScaleAnimation(1, 0.1f, 1, 0.1f,//x轴大小从1~0.1,y轴从1~0.1                    Animation.RELATIVE_TO_SELF, 0.5f,   //以圆心(x,y)进行缩放                    Animation.RELATIVE_TO_SELF, 0.5f);            animationSet.addAnimation(scaleAnimation);            animationSet.setStartOffset(1000);           //动画开始之前的等待时间            animationSet.setFillAfter(true);             //保持动画结束的状态            animationSet.setFillBefore(false);           //回到动画开始前的状态(false)            animationSet.setDuration(2000);              //动画时间            imageView.startAnimation(animationSet);        }    }    /*     *    渐渐淡出效果:     *      1. 创建一个AnimationSet对象     *      2. 创建一个AlphaAnimation对象     **/    private class AlphaButtonListener implements View.OnClickListener {        @Override        public void onClick(View view) {            AnimationSet animationSet = new AnimationSet(true);      //创建一个AnimationSet对象            AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);//从完全透明到完全不透明            alphaAnimation.setDuration(1000);         //设置动画执行的时间(单位:毫秒)            animationSet.addAnimation(alphaAnimation);//将AlphaAnimation对象添加到AnimationSet当中            imageView.startAnimation(animationSet);   //使用ImageView的startAnimation方法开始执行动画        }    }    private class TranslateButtonListener implements View.OnClickListener {        @Override        public void onClick(View view) {            AnimationSet animationSet = new AnimationSet(true);            TranslateAnimation translateAnimation = new TranslateAnimation(                    Animation.RELATIVE_TO_SELF, 0f,      //x-start                    Animation.RELATIVE_TO_SELF, 0.5f,    //x-end                    Animation.RELATIVE_TO_SELF, 0f,      //y-start                    Animation.RELATIVE_TO_SELF, 1.0f);   //y-end            translateAnimation.setDuration(1000);            animationSet.addAnimation(translateAnimation);            imageView.startAnimation(animationSet);        }    }
0 0