zoukankan      html  css  js  c++  java
  • 动画---图形图像与动画(三)Animation效果的XML实现

    使用XML来定义Tween Animation 
    动画的XML文件在工程中res/anim目录,这个文件必须包含一个根元素,可以使<alpha><scale> <translate> <rotate>插值元素或者是把上面的元素都放入<set>元素组中,默认情况下,所以的动画指令都是同时发生的,为了让他们按序列发生,需要设置一个特殊的属性startOffset。动画的指令定义了你想要发生什么样的转换,当他们发生了,应该执行多长时间,转换可以是连续的也可以使同时的。例如,你让文本内容从左边移动到右边,然后旋转180度,或者在移动的过程中同时旋转,没个转换需要设置一些特殊的参数(开始和结束的大小尺寸的大小变化,开始和结束的旋转角度等等,也可以设置些基本的参数(例如,开始时间与周期),如果让几个转换同时发生,可以给它们设置相同的开始时间,如果按序列的话,计算开始时间加上其周期。 
    Tween Animation共同的节点属性 

     

    属性[类型] 功能 备注
    Duration[long] 属性为动画持续时间 时间以毫秒为单位
    fillAfter [boolean] 当设置为true ,该动画转化在动画结束后被应用
    fillBefore[boolean] 当设置为true ,该动画转化在动画开始前被应用

    interpolator

    指定一个动画的插入器 有一些常见的插入器
    accelerate_decelerate_interpolator
    加速-减速 动画插入器
    accelerate_interpolator
    加速-动画插入器
    decelerate_interpolator
    减速- 动画插入器
    其他的属于特定的动画效果
    repeatCount[int] 动画的重复次数
    RepeatMode[int] 定义重复的行为 1:重新开始  2:plays backward
    startOffset[long] 动画之间的时间间隔,从上次动画停多少时间开始执行下个动画
    zAdjustment[int] 定义动画的Z Order的改变 0:保持Z Order不变
    1:保持在最上层
    -1:保持在最下层

     

     

    表二

    XML节点 功能说明
    alpha 渐变透明度动画效果
    <alpha
    android:fromAlpha=”0.1″
    android:toAlpha=”1.0″
    android:duration=”3000″ />
    fromAlpha

    属性为动画起始时透明度

    0.0表示完全透明
    1.0表示完全不透明
    以上值取0.0-1.0之间的float数据类型的数字

    duration为动画持续时间,ms单位

    toAlpha

    属性为动画结束时透明度

     

     

    表三

    scale 渐变尺寸伸缩动画效果
    <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:startOffset=“700”
    android:duration=”700″
    android:repeatCount=”10″ />
    fromXScale[float] fromYScale[float] 为动画起始时,X、Y坐标上的伸缩尺寸 0.0表示收缩到没有
    1.0表示正常无伸缩
    值小于1.0表示收缩
    值大于1.0表示放大
    toXScale [float]
    toYScale[float]
    为动画结束时,X、Y坐标上的伸缩尺寸
    pivotX[float]
    pivotY[float]
    为动画相对于物件的X、Y坐标的开始位置 属性值说明:从0%-100%中取值,50%为物件的X或Y方向坐标上的中点位置

     

     

    表四
    translate 画面转换位置移动动画效果
    <translate
    android:fromXDelta=”30″
    android:toXDelta=”-80″
    android:fromYDelta=”30″
    android:toYDelta=”300″
    android:duration=”2000″ />
    fromXDelta
    toXDelta
    为动画、结束起始时 X坐标上的位置
    fromYDelta
    toYDelta
    为动画、结束起始时 Y坐标上的位置

     

     

    表五
    rotate 画面转移旋转动画效果
    <rotate
    android:interpolator=”@android:anim/accelerate_decelerate_interpolator”
    android:fromDegrees=”0″
    android:toDegrees=”+350″
    android:pivotX=”50%”
    android:pivotY=”50%”
    android:duration=”3000″ />
    fromDegrees 为动画起始时物件的角度 说明
    当角度为负数——表示逆时针旋转
    当角度为正数——表示顺时针旋转
    (负数from——to正数:顺时针旋转)
    (负数from——to负数:逆时针旋转)
    (正数from——to正数:顺时针旋转)
    (正数from——to负数:逆时针旋转)
    toDegrees 属性为动画结束时物件旋转的角度 可以大于360度
    pivotX
    pivotY
    为动画相对于物件的X、Y坐标的开始位 说明:以上两个属性值 从0%-100%中取值
    50%为物件的X或Y方向坐标上的中点位置

     


    下面给出一个完整的XML定义(SDK提供) 

    复制代码代码如下:

    <SPAN style="FONT-SIZE: 18px"><set android:shareInterpolator="false" xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="1.0" 
    android:toXScale="1.4" 
    android:fromYScale="1.0" 
    android:toYScale="0.6" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:fillAfter="false" 
    android:duration="700" /> 
    <set android:interpolator="@android:anim/decelerate_interpolator"> 
    <scale 
    android:fromXScale="1.4" 
    android:toXScale="0.0" 
    android:fromYScale="0.6" 
    android:toYScale="0.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="700" 
    android:duration="400" 
    android:fillBefore="false" /> 
    <rotate 
    android:fromDegrees="0" 
    android:toDegrees="-45" 
    android:toYScale="0.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="700" 
    android:duration="400" /> 
    </set> 
    </set></SPAN> 


    一下是实现的一个实例的截图: 
    pic 
    所用到的xml文件如下: 
    1.alpha 

    复制代码代码如下:

    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
    android:fromAlpha="1.0" 
    android:toAlpha="0.0" 
    android:startOffset="500" 
    android:duration="2000" 
    /> 
    </set> 


    2.rotate 

    复制代码代码如下:

    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <rotate 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromDegrees="0" 
    android:toDegrees="360" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="2000" 
    /> 
    </set> 


    3.scale 

    复制代码代码如下:

    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <scale 
    android:interpolator="@android:anim/accelerate_decelerate_interpolator" 
    android:fromXScale="0.0" 
    android:toXScale="1.0" 
    android:fromYScale="0.0" 
    android:toYScale="1.0" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:fillAfter="false" 
    android:duration="2000" 
    /> 
    </set> 


    4.translate 

    复制代码代码如下:

    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
    android:fromXDelta="10" 
    android:toXDelta="100" 
    android:fromYDelta="10" 
    android:toYDelta="100" 
    android:duration="2000" 
    /> 
    </set> 
    public class Animation_XML_Activity extends Activity { 
    private Button button1; 
    private Button button2; 
    private Button button3; 
    private Button button4; 
    private ImageView imageView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_animation__xml_); 



    public void Alpha() { 
    Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.alpha); 
    imageView.startAnimation(animation); 

    public void Rotate() { 
    Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.rotate); 
    imageView.startAnimation(animation); 

    public void Scale() { 
    Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.scale); 
    imageView.startAnimation(animation); 

    public void Translate() { 
    Animation animation=AnimationUtils.loadAnimation(Animation_XML_Activity.this, R.anim.translate); 
    imageView.startAnimation(animation); 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_animation__xml_, menu); 
    return true; 

  • 相关阅读:
    26 转义符 re模块 方法 random模块 collection模块的Counter方法
    25 正则表达式
    24 from 模块 import 名字
    24 from 模块 import 名字
    24 from 模块 import 名字
    23 析构方法 items系列 hash方法 eq方法
    21 isinstance issubclass 反射 _str_ _new_ _len_ _call_
    20 属性, 类方法, 静态方法. python2与python3的区别.
    python(1)
    python之字符串格式化
  • 原文地址:https://www.cnblogs.com/awkflf11/p/5505123.html
Copyright © 2011-2022 走看看