zoukankan      html  css  js  c++  java
  • Animation初探(一)

      在安卓开发中,适当的动画效果能够让交互更加有趣且具有暗示作用,因此在安卓开发中,动画的设计是必不可少的一环。安卓框架中自带的动画可分为变换动画、帧动画、布局动画和属性动画,一个一个慢慢来。先来学习变换动画。

      变换动画有四种:AlphaAnimation(透明度动画),ScaleAnimation(缩放动画),TranslateAnimation(平移动画),RotateAnimation(旋转动画)。它们都是Animation这个类的子类,自然也继承了它的方法,比如setDuration()——设置动画时间、setStartOffset——设置动画开始延迟时间等等。

      最最基本的用法就是:  

    ImageView animationExample;
    Animation animation;        
    animationExample = (ImageView)findViewById(R.id.animation_example); 
    //透明度从0.2到1.0      
    animation = new AlphaAnimation(0.2f,1.0f);
    //动画过程总长2秒
    animation.setDuration(2000);
    //动画开始时延迟1秒
    animation.setStartOffset(1000);    
    //为这个ImageView设置动画            
    animationExample.setAnimation(animation);

      只需要上面的7行代码,就可以做一个使一个图片由半透明慢慢变成不透明的动画。

      

      但是,我们有时候不希望动画如此简单,我们可能希望有多个动画同时作用。Android为我们提供了一个方便的类AnimationSet,用它我们可以方便的将多种动画组合到一起。我们把上面的代码改成这样。

      

    ImageView animationExample;
    AnimationSet animationSet;
    Animation animation;        
    animationExample = (ImageView)findViewById(R.id.animation_example); 
    animationSet = new AnimationSet(true);
    //透明度从0.2到1.0 animation = new AlphaAnimation(0.2f,1.0f); //动画过程总长2秒 animation.setDuration(2000); //动画开始时延迟1秒 animation.setStartOffset(1000); animationSet.addAnimation(animation); //大小从0.2,0.2的宽高变成1.0,1.0宽高 animation = new ScaleAnimation(0.2f,1.0f,0.2f,1.0f); //动画过程总长2秒 animation.setDuration(2000); //动画开始时延迟1秒 animation.setStartOffset(1000); animationSet.addAnimation(animation); //为这个ImageView设置动画 animationExample.setAnimation(animationSet);

      如上面的代码所示,我们有两个动画,一个是将透明度从0.2变到1,一个是将图片的大小从0.2到1,他们的持续时间和开始延迟时间是相同的。此时,我们将两个Animation都通过animationSet.addAnimation()这个方法加入到animationSet中去,AnimationSet本身也是一个Animation的子类,最终,我们只需使图片执行AnimationSet中的动画即可。

      另外两种动画以此类推

    平移动画:

                    animation = new TranslateAnimation(-100f,0,-100f,0);
                    animation.setDuration(2000);
                    animation.setStartOffset(1000);

      这是平移的最基本形式,目标坐标0,0表示ImageView最终会移动到原位置,-100,-100表示,ImageView从原位置的左上方开始移动。

    旋转动画:

                    animation = new RotateAnimation(0f,720f);
                    animation.setDuration(2000);
                    animation.setStartOffset(1000);

      这是旋转动画的基本形式,动画将以ImageView的左上角为圆心,顺时针旋转,上面的设置是两圈。

    以上

  • 相关阅读:
    <JavaScript> 组合继承
    <JavaScript> 稳妥构造函数模式与工厂模式的区别
    <JavaScript> call()、apply()、bind() 的用法
    <JavaScript>可枚举属性与不可枚举属性
    <JavaScript>闭包(closure)
    在MongoDB中实现聚合函数
    (转)如何入门 Python 爬虫
    Python爬虫实战四之抓取淘宝MM照片
    转载:十年驾车经验总结:活着,才是硬道理
    设计模式之单例模式的七种写法
  • 原文地址:https://www.cnblogs.com/fishbone-lsy/p/4458809.html
Copyright © 2011-2022 走看看