Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android實現動畫效果詳解

Android實現動畫效果詳解

編輯:關於Android編程

目前Android平台提供了兩類動畫一類是Tween動畫,第二類就是 Frame動畫,具體內容介紹請看下文:

一類是Tween動畫,就是對場景裡的對象不斷的進行圖像變化來產生動畫效果(旋轉、平移、放縮和漸變)。

第二類就是 Frame動畫,即順序的播放事先做好的圖像,與gif圖片原理類似。

實現動畫有兩種方式:一種使用XML文件(文件放在res/anim),一種直接代碼搞定

 1、透明度控制動畫效果alpha

<!--
透明度控制動畫效果alpha
 浮點型值:
 fromAlpha 動畫起始時透明度
 toAlpha 動畫結束時透明度
 說明:0.0 完全透明
 1.0 完全不透明
 以上值取0.0-1.0之間的 float數據類型的數字
duration 為動畫持續時間
長整型:
說明:時間以毫秒為單位
-->
<alpha
 android:duration="3000"
 android:fromAlpha="0.0"
 android:toAlpha="1.0" />

代碼方式:

復制代碼 代碼如下:
Animation animationAlpha = new AlphaAnimation(0.0f, 1.0f);
animationAlpha.setDuration(3000);
ivAnim.startAnimation(animationAlpha);
 

2、rotate旋轉動畫

<!--
rotate旋轉動畫效果

屬性:interpolator 指定一個動畫的插入器
有三種動畫插入器:
 accelerate_decelerate_interpolator 加速-減速 動畫插入器
 accelerate_interpolator 加速-動畫插入器
 decelerate_interpolator 減速-動畫插入器
 其他的屬於特定的動畫效果

浮點整型值:
 fromDegrees 為動畫起始時物件的角度
 toDegrees 為動畫起始時物件旋轉的角度 可以大於360度
說明:當角度為負數——表示逆時針旋轉
  當角度為正數——表示順時針旋轉
  (負數from——to正數:順時針旋轉
  負數from——to負數:逆時針旋轉
  正數from——to正數:順時針旋轉)
  
pivotX 為動畫相對於物件的X坐標的開始位置
pivotY 為動畫相對於物件的Y坐標的開始位置
說明:以上兩個屬性值 從0%——100%中取值
 50%為物件的X或Y方向坐標上的中點位置
長整型類型:
duration 為動畫持續時間
說明:時間以毫秒為單位
 -->
<rotate
 android:duration="3000"
 android:fromDegrees="0"
 android:interpolator="@android:anim/accelerate_decelerate_interpolator"
 android:pivotX="50%"
 android:pivotY="50%"
 android:toDegrees="+350" />

復制代碼 代碼如下:
Animation animationRotate = new RotateAnimation(0.0f, +350.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animationRotate.setDuration(3000);
ivAnim.startAnimation(animationRotate);

3、尺寸伸縮動畫效果 scale

<!--
尺寸伸縮動畫效果 scale
屬性:interpolator 指定一個動畫的插入器
  有三種動畫插入器:
  accelerate_decelerate_interpolator 加速-減速 動畫插入器
  accelerate_interpolator 加速-動畫插入器
  decelerate_interpolator 減速-動畫插入器
  其他的屬於特定的動畫效果
浮點型值:
 fromXScale 動畫起始時 X坐標上的伸縮尺寸
 toXScale 動畫結束時 X坐標上的伸縮尺寸
 fromYScale 動畫起始 Y時坐標上的伸縮尺寸
 toYScale 動畫結束時 Y坐標上的尺寸
 說明:以上四種屬性值
 0.0表示收縮到沒有
 1.0表示正常無伸縮
  值小於1.0表示收縮
  值大於1.0表示放大
 pivotX 動畫相對於物件的X坐標的開始位置
 pivotY 動畫相對於武將的Y坐標的開始位置
 說明:以上兩個屬性值 從0%-100%中取值
 長整型:
 duration 動畫持續時間
 說明:時間以毫秒為單位
 布爾型值:
 fillAfter 當設置為true,該動畫轉化在動畫結束後被應用
-->

<scale
 android:duration="700"
 android:fillAfter="false"
 android:fromXScale="0.0"
 android:fromYScale="0.0"
 android:interpolator="@android:anim/accelerate_decelerate_interpolator"
 android:pivotX="50%"
 android:pivotY="50%"
 android:toXScale="1.4"
 android:toYScale="1.4" />


代碼方式:

Animation animationScale = new ScaleAnimation(0.0f, 1.4f, 0.0f, 1.4f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animationScale.setDuration(3000);
ivAnim.startAnimation(animationScale);

4、translate 位置轉移動畫效果

<!--
translate 位置轉移動畫效果
 整型值:
 fromXDelta 動畫起始時 X坐標上的位置 
 toXDelta 動畫結束時 X坐標上的位置
 fromYDelta 動畫起始時 Y坐標上的位置
 toYDlta 動畫結束時 Y坐標上的位置
 注意:沒有指定fromXTra toXType fromYType toYType 時候,默認是以自己為相對參照物
 長整型:duration 為動畫持續時間
    時間以毫秒為單位
-->

<translate
 android:duration="2000"
 android:fromXDelta="30"
 android:fromYDelta="30"
 android:toXDelta="-80"
 android:toYDelta="300" />

復制代碼 代碼如下:
Animation animationTranslate = new TranslateAnimation(30.0f, -80.0f, 30.0f, 300.0f);
animationTranslate.setDuration(3000);
ivAnim.startAnimation(animationTranslate);
 

xml文件方式使用的話就兩行代碼

復制代碼 代碼如下:
Animation anim = AnimationUtils.loadAnimation(activity, R.anim.anim_xxx);
ivAnim.startAnimation(anim);
 

5、frame幀動畫(文件放在res/drawable)

<!--
 根標簽為animation-list,其中oneshot代表著是否只展示一遍,設置為false會不停的循環播放動畫 
 根標簽下,通過item標簽對動畫中的每一個圖片進行聲明 
 android:duration 表示展示所用的該圖片的時間長度 

-->
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 android:oneshot="true" >

 <item
 android:drawable="@drawable/icon_frame1"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame2"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame3"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame4"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame5"
 android:duration="200">
 </item>
 <item
 android:drawable="@drawable/icon_frame6"
 android:duration="50">
 </item>
</animation-list>

xml幀動畫使用代碼:
ivFrame = (ImageView) findViewById(R.id.iv_frame_image);
ivFrame.setImageResource(R.drawable.anim_frame); 
animation = (AnimationDrawable) ivFrame.getDrawable();
animation.setOneShot(false);//循環
animation.start();

以上就是針對Android實現動畫效果的全部內容,希望大家能夠喜歡。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved