android動畫效果 — 設定activity 跳轉動畫

來源:互聯網
上載者:User

轉載:http://ming-fanglin.iteye.com/blog/1396473

 

原來使用Activity.overridePendingTransition來自訂Activity的進入動畫,卻發現沒法定義退出的動畫。結果就發現了強大的Theme和Style,之後還需要好好研究一下。

具體是這樣子的:

在AndroidManifest裡面,對於application和activity標籤可以定義theme屬性。如果對Application定義了某一個屬性,那麼會對所有的activity產生影響,當然你可以在activity中覆蓋它。

<application android:theme="@style/ThemeActivity">  

然後在values/themes.xml中

Java代碼
 
  1. <style name="ThemeActivity" mce_bogus="1">           
  2.   
  3. <item name="android:windowAnimationStyle">@style/AnimationActivity</item>           
  4.   
  5. <item name="android:windowNoTitle">true</item>         
  6.   
  7. </style>     
<style name="ThemeActivity" mce_bogus="1">        <item name="android:windowAnimationStyle">@style/AnimationActivity</item>        <item name="android:windowNoTitle">true</item>      </style>   

在values/styles.xml中

Java代碼
 
  1. <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">       
  2.   
  3. <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>             
  4.   
  5. <item name="android:activityOpenExitAnimation">@anim/push_left_out</item>             
  6.   
  7. <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item>      
  8.   
  9. <item name="android:activityCloseExitAnimation">@anim/push_right_out</item>         
  10.   
  11. </style>     
<style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1">    <item name="android:activityOpenEnterAnimation">@anim/push_left_in</item>          <item name="android:activityOpenExitAnimation">@anim/push_left_out</item>          <item name="android:activityCloseEnterAnimation">@anim/push_right_in</item>   <item name="android:activityCloseExitAnimation">@anim/push_right_out</item>      </style>   

這樣就可以了,至於anim中的動畫,就自己定義啦,這個和普通的animation是一樣的,如果不知道的話,請參見

http://developer.android.com/guide/topics/graphics/view-animation.html。

這種方式除了可以定義activity的animation之外,還有task,window出現和結束時候的動畫,具體請參見

http://developer.android.com/reference/android/R.styleable.html#WindowAnimation

本人不明白的 mce_bogus="1" 是什麼意思,去掉了也沒有影響

附普通轉場效果動畫:

Activity的切換動畫指的是從一個activity跳轉到另外一個activity時的動畫。
它包括兩個部分:
一部分是第一個activity退出時的動畫;
另外一部分時第二個activity進入時的動畫;

在Android的2.0版本之後,有了一個函數來幫我們實現這個動畫。這個函數就是
overridePendingTransition
這個函數有兩個參數,第一個參數是第二個activity進入時的動畫,第二個參數是第一個activity退出時的動畫。

這裡需要特別說明的是,關於overridePendingTransition這個函數,有兩點需要主意:
1.它必需緊挨著startActivity()或者finish()函數之後調用
2.它只在android2.0以及以上版本上適用

下面舉個例子

overridePendingTransition(R.anim.push_left_in,R.anim.push_left_out);

R.anim.push_left_in,第二一個activity進入時動畫

push_left_in這個xml檔案,放在res/anim目錄下

代碼如下:

Java代碼
 
  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">   
  3.     <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>   
  4.     <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />   
  5. </set>  
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android">    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="300"/>    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" /></set>

R.anim.push_left_out,第一個activity出去時動畫

代碼如下:

Java代碼
 
  1. <set xmlns:android="http://schemas.android.com/apk/res/android">   
  2.     <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>   
  3.     <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />   
  4. </set>  
<set xmlns:android="http://schemas.android.com/apk/res/android">    <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="300"/>    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" /></set>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.