zoukankan      html  css  js  c++  java
  • Android-补间动画效果

    Android的SDK提供了三种类型的动画,分别是补间动画、逐帧动画和插值属性动画。下面先介绍第一种动画效果-补间动画。

    补间动画可以应用于View,让开发者可以定义一些关于大小、位置、旋转和透明度的改变效果,达到让View的内容动起来的效果。

    补间动画是使用Animation类创建的,它有4个直接子类,分别实现不同的动画效果,分别为:

    AlphaAnimation 渐变透明度动画效果,即淡入淡出效果
    ScaleAnimation 渐变尺寸伸缩动画效果,即缩放效果
    TranslateAnimation 画面转换位置移动动画效果,移动效果
    RotateAnimation 画面转移旋转动画效果,即旋转效果

    要使用补间动画的效果,有两种方法,第一种是在XML文件中设置动画效果;第二种是在Java代码中设置。下面分别介绍这两种方法:

    1.在XML文件中设置方式:

    在Android项目的res目录下新建anim文件夹,然后在anim文件夹下新建firstanim.xml,添加动画效果的配置代码,示例代码如下:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
      <alpha
    	android:fromAlpha="0.1"
    	android:toAlpha="1.0"
    	android:duration="3000"
    	/> 
    <!-- 透明度控制动画效果 alpha
            
                fromAlpha 为动画起始时透明度
                toAlpha   为动画结束时透明度
                取值说明: 0.0表示完全透明,1.0表示完全不透明,以上值取0.0-1.0之间的float数据类型的数字
    
                duration  为动画持续时间,时间以毫秒为单位
    -->
      
    
      <scale  
              android:interpolator=
                         "@android:anim/accelerate_decelerate_interpolator"
              android:fromXScale="0.0"
              android:toXScale="1.4"
              android:fromYScale="0.0"
              android:toYScale="1.4"
              android:pivotX="50%"
              android:pivotY="50%"
              android:fillAfter="false"
              android:duration="700" />
    
    <!-- 尺寸伸缩动画效果 scale
           interpolator 指定一个动画的插入器
             几种简单的动画插入器:
              accelerate_decelerate_interpolator  先加速后减速,开始结束时慢,中间加速            
    	accelerate_interpolator        加速,开始时慢中间加速
                decelerate_interpolator       减速,开始时快然后减速 
    	LinearInterpolator        线性,线性均匀改变      
             
                fromXScale 为动画起始时 X坐标上的伸缩尺寸    
                toXScale   为动画结束时 X坐标上的伸缩尺寸     
            
                fromYScale 为动画起始时Y坐标上的伸缩尺寸    
                toYScale   为动画结束时Y坐标上的伸缩尺寸    
               以上四种属性值说明:   
        
                        0.0表示收缩到没有 
                        1.0表示正常无伸缩     
                        值小于1.0表示收缩  
                        值大于1.0表示放大
            
                pivotX     为动画相对于物件的X坐标的开始位置
                pivotY     为动画相对于物件的Y坐标的开始位置
    	 以上两个属性值 从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置
    
                duration  为动画持续时间,时间以毫秒为单位
    
              fillAfter 当设置为true ,控件停放在动画结束的位置
    -->
    
    
    
      <translate
    	android:fromXDelta="30"
    	android:toXDelta="-80"
    	android:fromYDelta="30"
    	android:toYDelta="300"
    	android:duration="2000"
    />
    <!-- translate 位置转移动画效果
               
    	fromXDelta 为动画起始时 X坐标上的位置    
                toXDelta   为动画结束时 X坐标上的位置
                fromYDelta 为动画起始时 Y坐标上的位置
                toYDelta   为动画结束时 Y坐标上的位置
               没有指定fromXType toXType fromYType toYType 时候,默认是以自己为相对参照物             
    
                duration  动画持续时间,时间以毫秒为单位
    -->
    
    
      <rotate 
            android:interpolator="@android:anim/accelerate_decelerate_interpolator"
            android:fromDegrees="0" 
            android:toDegrees="+350"         
            android:pivotX="50%" 
            android:pivotY="50%"     
            android:duration="3000" />  
    <!-- rotate 旋转动画效果
           interpolator 指定一个动画的插入器
          fromDegrees 为动画起始时控件的角度    
           toDegrees   为动画结束时物件旋转的角度 可以大于360度   
          当角度为负数——表示逆时针旋转
           当角度为正数——表示顺时针旋转              
           负数from——to正数:顺时针旋转)   
          (负数from——to负数:逆时针旋转) 
          (正数from——to正数:顺时针旋转) 
          (正数from——to负数:逆时针旋转)       
    
           pivotX    为动画相对于物件的X坐标的开始位置
            pivotY    为动画相对于物件的Y坐标的开始位置
           以上两个属性值 从0%-100%中取值
           duration  为动画持续时间,时间以毫秒为单位
    -->
    </set>
    
    

    在Activity中的onCreate()方法中,获取在XML中配置的动画效果,代码如下:

    Animation animation= AnimationUtils.loadAnimation(this,R.anim.firstanim);


    如果这个动画效果使用在一个ImageView上,可以参考如下代码:

    imageView.startAnimation(animation);

    2.在Java代码中设置方式:

    AlphaAnimation为例,

    //首先声明Animation的一个对象
    private Animation alpha;
    
    
     //在Activity的onCreate()方法中实例化这个对象
    alpha=new AlphaAnimation(0.1f, 1.0f);
    
    
    
    //设置动画持续时间为3秒
    
    alpha.setDuration(3000);
    


    如果这个动画效果使用在一个ImageView上,可以参考如下代码:

    imageView.startAnimation(alpha);


     

  • 相关阅读:
    UVALive 6909 Kevin's Problem 数学排列组合
    UVALive 6908 Electric Bike dp
    UVALive 6907 Body Building tarjan
    UVALive 6906 Cluster Analysis 并查集
    八月微博
    hdu 5784 How Many Triangles 计算几何,平面有多少个锐角三角形
    hdu 5792 World is Exploding 树状数组
    hdu 5791 Two dp
    hdu 5787 K-wolf Number 数位dp
    hdu 5783 Divide the Sequence 贪心
  • 原文地址:https://www.cnblogs.com/james1207/p/3271406.html
Copyright © 2011-2022 走看看