35

進入新活動的最佳方式是什麼,但使活動看起來像活動向左滑動,新活動進入屏幕?我正在使用intent來調用這個新的活動,如果我希望這個應用程序是輕量級的,那麼是否這樣做呢?Android的新活動「從側面進入」

爲了更好地解釋一下:在我的Android手機上,我可以用主屏幕向右滑動視圖,然後從左側輸入朋友流,並在屏幕上進行。我想用buttonclicks在我的應用中完成它,這是我之後的「滑動」。 謝謝!

回答

88

在android OS 2.1或更高版本中,我認爲您可以使用OverridePendingTransition()方法來提供您正在查找的活動動畫之間的轉換類型。

首先,定義一對動畫資源/res/anim/。這是一個名爲right_slide_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator"> 
    <translate 
     android:fromXDelta="0" 
     android:toXDelta="100%p" 
     android:duration="500" 
    /> 
</set> 

的另一個名爲right_slide_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator"> 
    <translate 
     android:fromXDelta="100%p" 
     android:toXDelta="0" 
     android:duration="700" 
    /> 
</set> 

然後,當你開始新的活動,使用OverridePendingTransition方法在:

startActivity(intent); 
overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out); 

這應該處理啓動的過渡動畫活動。

對於相反的情況,當活動結束並且你回到原來的那個時,它會變得更加模糊。

如果您有一些結束該活動並調用Activity.finish()的UI控件,那麼您可以在其後添加overridePendingTransition()。

來處理情況,用戶按後退按鈕結束活動的情況下,使用類似以下內容:

@Override 
public void onBackPressed() 
{ 

    this.finish(); 
    overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out); 
} 
3

是的,使用意圖是開始另一項活動的標準方法,並且通常會提到滑動的東西。 例如startActivity(new Intent(this,myNextActivity.class));會做的。

+1

實際上不是...所以當我開始一個新的活動,它(有點)碰到一個醜陋的影響我的看法... – 2012-12-12 12:19:09

3

傑姆斯是正確的。默認情況下,您將在啓動新的意圖時獲得滑動動畫。

如果您正在尋找更多自定義動畫,您可以使用overridePendingTransition。請記住它已添加到API Level 5中。有關示例用法,請參見API demo

+0

感謝您的API演示鏈接,這是一個djungle有時在那裏。但是我理解:在我看來,當啓動一個新的意圖時,默認動畫是一種現有活動的消失,而且我稱之爲從「屏幕內部」擴展的那種。我嘗試了AVD和我的設備。我錯過了什麼嗎? – kakka47 2011-01-26 21:50:43

+0

kakka47,我相信默認的過渡更改爲冰淇淋三明治,但它可能與蜂窩 - 不知道。 – 2012-08-02 04:55:53

4

你可以使用一個left_slide_out.xml(只是改變toXDelta在Josh的right_slide_out.xml讀取-100%p),以使舊的活動消失到左側(並且在兩個動畫上也具有相同的持續時間)。

0

對於什麼是進入和退出動畫有一些混淆。對於那些仍在思考它的人來說,這裏是一個模板..

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity 
); 

這應該可能會清除空氣。