Activity左邊滑出,右邊滑入的動畫切換
轉載請注明出處:http://blog.csdn.net/u012301841/article/details/46920809
大家都知道Android系統默認Activity間的動畫切換效果為:左邊滑出、右邊滑入。按返回鍵的動畫切換效果為:左邊滑入,右邊滑出。可是如今的手機制造商都定制自己的Rom。像MI UI和錘子OS等之類的手機。導致Android原生的切換動畫在不同的手機上發生了改變。有時候我們須要讓他變回原生的狀態。
這是我在網上盜的一張圖,它清晰的告訴我們Android的位移動畫的變換方式:
以下就是詳細的實現過程了:
寫動畫文件
在 res文件夾創建anim文件夾, 然后在文件夾創建動畫的xml文件:out_to_left.xml (從左邊退出動畫) 、in_from_right.xml(從右邊進入動畫)
out_to_right.xml(從右邊退出動畫)、in_from_left.xml(從左邊進入動畫)
in_from_left.xml
<?
xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="-100%p" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0%p" > </translate>
in_from_right.xml
<?
xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="100%p" android:interpolator="@android:anim/accelerate_interpolator" android:toXDelta="0%p" > </translate>
out_to_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0%p" android:toXDelta="-100%p" android:interpolator="@android:anim/accelerate_interpolator" >
</translate>
out_to_right.xml
<?xml version="1.0" encoding="utf-8"?
> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0%p" android:toXDelta="100%p" android:interpolator="@android:anim/accelerate_interpolator" > </translate>
寫主題文件
在values文件夾中打開style.xml的文件,在當中插入一個style節點,聲明一個主題。
<style name="Anim_fade" parent="android:Theme.NoTitleBar"> <item name="android:windowAnimationStyle">@style/fade</item> </style>
能夠看到。以上主題的父主題是@android :style/Theme.NoTitleBar, 就是繼承自系統主題的大部分屬性。
當中有一個”android:windowAnimationStyle”屬性是由我們自己定義的,定位的位置相同在values文件夾下的style文件里。
<style name="fade" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/in_from_right</item>
<item name="android:activityOpenExitAnimation">@anim/out_to_left</item>
<item name="android:activityCloseEnterAnimation">@anim/in_from_left</item>
<item name="android:activityCloseExitAnimation">@anim/out_to_right</item>
</style>
以下重點介紹這當中的幾個屬性的含義,大家網上搜一下也是能夠的。我就直接將我所了解的說一下了:
如今如果有兩個Activity A 和 B,在A中能夠啟動B。
同一時候,A和B的theme屬性均設置為上面定義的屬性。那么,以上動畫的發生時機例如以下:
(1)當A啟動B時,A退出。B進入,A退出時的動畫名稱為android:activityOpenExitAnimation。動畫文件為
R.anim.out_to_left,B進入時的動畫名稱為android:activityOpenEnterAnimation, 動畫文件為R.anim.in_from_right。
(2)當B結束時,B退出,A進入。B退出的動畫名稱為android:activityCloseExitAnimation, 動畫文件為R.anim.out_to_right, A進入時的動畫名稱為android:activityCloseEnterAnimation, 動畫文件為R.anim.in_from_left。
以上所有ok了,我們就能看到想要的效果了。約了基友網上打LOL的,讓他等了2個多小時了。預計等會會被罵死,效果圖就不貼了,代碼已上傳,須要的話能夠下載看看。