歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android動畫效果Animation之Tween實現簡單動畫

Android動畫效果Animation之Tween實現簡單動畫

日期:2017/3/1 10:39:53   编辑:Linux編程

1、Android 平台提供了兩類動畫,一類是 Tween 動畫,即通過對場景裡的對象不斷做圖像變換 ( 平移、縮放、旋轉 ) 產生動畫效果;第二類是 Frame 動畫,即順序播放事先做好的圖像,跟電影類似。我們先介紹Tween來實現簡單的動畫;

2、首先看效果圖



在項目res文件夾下建一個anim文件夾裡建一個tween.xml文件:

[html]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <alpha
  4. android:duration="5000"
  5. android:fromAlpha="0"
  6. android:toAlpha="1.0" />
  7. <!--
  8. 透明度控制動畫效果 alpha
  9. 浮點型值:
  10. fromAlpha 屬性為動畫起始時透明度
  11. toAlpha 屬性為動畫結束時透明度
  12. 說明:
  13. 0.0表示完全透明
  14. 1.0表示完全不透明
  15. 以上值取0.0-1.0之間的float數據類型的數字
  16. 長整型值:
  17. duration 屬性為動畫持續時間
  18. 說明:
  19. 時間以毫秒為單位
  20. -->
  21. <rotate
  22. android:duration="5000"
  23. android:fromDegrees="0"
  24. android:pivotX="50%"
  25. android:pivotY="50%"
  26. android:toDegrees="1080" />
  27. <!--
  28. rotate 旋轉動畫效果
  29. 浮點數型值:
  30. fromDegrees 屬性為動畫起始時物件的角度
  31. toDegrees 屬性為動畫結束時物件旋轉的角度 可以大於360度
  32. 說明:
  33. 當角度為負數——表示逆時針旋轉
  34. 當角度為正數——表示順時針旋轉
  35. (負數from——to正數:順時針旋轉)
  36. (負數from——to負數:逆時針旋轉)
  37. (正數from——to正數:順時針旋轉)
  38. (正數from——to負數:逆時針旋轉)
  39. pivotX 屬性為動畫相對於物件的X坐標的開始位置
  40. pivotY 屬性為動畫相對於物件的Y坐標的開始位置
  41. 說明: 以上兩個屬性值 從0%-100%中取值
  42. 50%為物件的X或Y方向坐標上的中點位置
  43. 長整型值:
  44. duration 屬性為動畫持續時間
  45. 說明: 時間以毫秒為單位
  46. -->
  47. <scale
  48. android:duration="5000"
  49. android:fromXScale="0.1"
  50. android:fromYScale="0.1"
  51. android:pivotX="50%"
  52. android:pivotY="50%"
  53. android:toXScale="3.0"
  54. android:toYScale="3.0" />
  55. <!--
  56. 尺寸伸縮動畫效果 scale
  57. 浮點型值:
  58. fromXScale 屬性為動畫起始時 X坐標上的伸縮尺寸
  59. toXScale 屬性為動畫結束時 X坐標上的伸縮尺寸
  60. fromYScale 屬性為動畫起始時Y坐標上的伸縮尺寸
  61. toYScale 屬性為動畫結束時Y坐標上的伸縮尺寸
  62. 說明:
  63. 以上四種屬性值
  64. 0.0表示收縮到沒有
  65. 1.0表示正常無伸縮
  66. 值小於1.0表示收縮
  67. 值大於1.0表示放大
  68. pivotX 屬性為動畫相對於物件的X坐標的開始位置
  69. pivotY 屬性為動畫相對於物件的Y坐標的開始位置
  70. 說明:
  71. 以上兩個屬性值 從0%-100%中取值
  72. 50%為物件的X或Y方向坐標上的中點位置
  73. 長整型值:
  74. duration 屬性為動畫持續時間
  75. 說明: 時間以毫秒為單位
  76. 布爾型值:
  77. fillAfter 屬性 當設置為true ,該動畫轉化在動畫結束後被應用
  78. -->
  79. <translate
  80. android:duration="5000"
  81. android:fromXDelta="-20"
  82. android:fromYDelta="-20"
  83. android:toXDelta="300"
  84. android:toYDelta="300" />
  85. <!--
  86. translate 位置轉移動畫效果
  87. 整型值:
  88. fromXDelta 屬性為動畫起始時 X坐標上的位置
  89. toXDelta 屬性為動畫結束時 X坐標上的位置
  90. fromYDelta 屬性為動畫起始時 Y坐標上的位置
  91. toYDelta 屬性為動畫結束時 Y坐標上的位置
  92. 注意:
  93. 沒有指定fromXType toXType fromYType toYType 時候,
  94. 默認是以自己為相對參照物
  95. 長整型值:
  96. duration 屬性為動畫持續時間
  97. 說明: 時間以毫秒為單位
  98. -->
  99. </set>

Android的animation由四種類型組成

alpha

漸變透明度動畫效果

scale

漸變尺寸伸縮動畫效果

translate

畫面轉換位置移動動畫效果

rotate

畫面轉移旋轉動畫效果


在main.xml文件中定義一個按鈕和一個ImageView:

[html]
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical"
  6. >
  7. <Button
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:id="@+id/button"
  11. android:text="重播"/>
  12. <ImageView
  13. android:layout_width="wrap_content"
  14. android:layout_height="wrap_content"
  15. android:layout_gravity="center_vertical"
  16. android:src="@drawable/pic"
  17. android:id="@+id/image"/>
  18. </LinearLayout>
button按鈕用來重播,imageView用來顯示那個動畫效果的!

最後是java代碼,MyAnimation.java:

[java]
  1. package cn.csdn.anim;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.View;
  5. import android.view.View.OnClickListener;
  6. import android.view.animation.Animation;
  7. import android.view.animation.AnimationUtils;
  8. import android.widget.Button;
  9. import android.widget.ImageView;
  10. public class MyAnimation extends Activity implements OnClickListener {
  11. private ImageView image = null;
  12. private Button button = null;
  13. private Animation animation;
  14. public void onCreate(Bundle savedInstanceState) {
  15. super.onCreate(savedInstanceState);
  16. setContentView(R.layout.main);
  17. init();
  18. }
  19. private void init() {
  20. image = (ImageView) this.findViewById(R.id.image);
  21. button = (Button) findViewById(R.id.button);
  22. button.setOnClickListener(this);
  23. animation = AnimationUtils.loadAnimation(this, R.anim.tween);// 使用AnimationUtils類的靜態方法loadAnimation()來加載XML中的動畫XML文件
  24. image.startAnimation(animation);// 開始動畫播出
  25. }
  26. @Override
  27. public void onClick(View v) {
  28. image.startAnimation(animation);// 開始動畫播出
  29. }
  30. }
是不是很簡單!!

alpha

漸變透明度動畫效果

scale

漸變尺寸伸縮動畫效果

translate

畫面轉換位置移動動畫效果

rotate

畫面轉移旋轉動畫效果


下一次講解怎麼用java代碼實現各種動畫效果! http://www.linuxidc.com/Linux/2012-01/51450.htm

Copyright © Linux教程網 All Rights Reserved