android中的所有activity間動畫跳轉

來源:互聯網
上載者:User

             在之前的一篇部落格裡介紹過activity間動畫跳轉的問題,但是真正做軟體發現並不能滿足我們的要求,因為使用overridePendingTransition(int enterAnim, intexitAnim)這個函數只能實現進入另一個activity的動畫,當另一個activity退出時,還是使用的系統動畫。所以在這裡講一下怎麼設定所有activity的動畫跳轉和退出跳轉。其實有些軟體已經這樣做了,比如我們都比較熟悉的福士點評網。

         下面我們通過一個執行個體來看一下怎麼實現所有activity動畫跳轉,這裡我們不妨就模仿下福士點評網activity的動畫跳轉。

         首先在layout/anim建立    anim_enter.xml

    

<?xml version="1.0" encoding="UTF-8"?><set android:interpolator="@android:anim/decelerate_interpolator"  xmlns:android="http://schemas.android.com/apk/res/android">    <scale android:duration="@android:integer/config_mediumAnimTime" android:pivotX="69.99999%" android:pivotY="100.0%" android:fromXScale="0.0" android:toXScale="1.0" android:fromYScale="0.0" android:toYScale="1.0" />    <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="0.0" android:toAlpha="1.0" /></set>

           anim_exit.xml

<?xml version="1.0" encoding="UTF-8"?><set android:interpolator="@android:anim/accelerate_interpolator"  xmlns:android="http://schemas.android.com/apk/res/android">    <scale android:duration="@android:integer/config_mediumAnimTime" android:pivotX="69.99999%" android:pivotY="100.0%" android:fromXScale="1.0" android:toXScale="0.0" android:fromYScale="1.0" android:toYScale="0.0" />    <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="1.0" android:toAlpha="0.0" /></set>

       上面的兩個xml分別對應overridePendingTransition(int enterAnim, int exitAnim) 中的進入和退齣動畫

     接下來定義當另一個activity退出時的動畫效果,back_enter.xml

<?xml version="1.0" encoding="UTF-8"?><set android:interpolator="@android:anim/decelerate_interpolator"  xmlns:android="http://schemas.android.com/apk/res/android">    <scale android:duration="@android:integer/config_mediumAnimTime" android:pivotX="50.0%" android:pivotY="50.0%" android:fromXScale="1.5" android:toXScale="1.0" android:fromYScale="1.5" android:toYScale="1.0" />    <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="0.4" android:toAlpha="1.0" /></set>

      back_exit.xml

<?xml version="1.0" encoding="UTF-8"?><set android:interpolator="@android:anim/decelerate_interpolator"  xmlns:android="http://schemas.android.com/apk/res/android">    <scale android:duration="@android:integer/config_mediumAnimTime" android:pivotX="50.0%" android:pivotY="50.0%" android:fromXScale="1.0" android:toXScale="0.4" android:fromYScale="1.0" android:toYScale="0.4" />    <alpha android:duration="@android:integer/config_mediumAnimTime" android:fromAlpha="1.0" android:toAlpha="0.0" /></set>

     進入和離開動畫效果我們已經定義好了,接下來需要定義樣式,以前我們設定動畫效果都是寫在activity中,只是對單個activity定義動畫。現在我們對所有的activity定義動畫效果,我們不妨設想一下應該定義一個樣式,在所有包裹activity的地方引入樣式。這樣我們就想到了AndroidManifest.xml裡的application 了,他裡面生命所有的activity,明白了這些就好辦了。

     接下來我們需要在String.xml聲明動畫的樣式

  

  <style name="ThemeActivity" mce_bogus="1"><item name="android:windowAnimationStyle">@style/AnimationActivity</item><item name="android:windowNoTitle">true</item></style>            <style name="AnimationActivity" parent="@android:style/Animation.Activity" mce_bogus="1"><item name="android:activityOpenEnterAnimation">@anim/anim_enter</item><item name="android:activityOpenExitAnimation">@anim/anim_exit</item><item name="android:activityCloseEnterAnimation">@anim/back_enter</item><item name="android:activityCloseExitAnimation">@anim/back_exit</item></style>

   

  然後在 AndroidManifest.xml裡聲明樣式

 <application        android:icon="@drawable/ic_launcher"  android:theme="@style/ThemeActivity"        android:label="@string/app_name" >        <activity            android:label="@string/app_name"            android:name=".GlobalAnimationActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name=".OtherActivity"></activity>    </application>

      OK,這樣就實現了福士點評網activity的動畫跳轉,大家自己體驗下吧。

      最近公司項目確實是比較忙,部落格裡有些朋友留言需要原始碼,也沒有一一發,我把大部分都已經上傳到群共用裡了,麻煩大家自己下載吧!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.