2013-02-26 10 views
10

私が達成しようとしているのは、終了アクティビティのみの遷移アニメーションで新しいアクティビティを開始することです。です。Androidアクティビティ遷移アニメーション

新しいアクティビティが現在のアクティビティの背後にある現在のアクティビティをスライドしたいと思います。

ここでアニメーションまでスライドさ:私は

overridePendingTransition (0 , R.anim.slide_up); 

R.layout.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

は、ここに私が活動のアニメーショントランジションを適用しています方法です入力したアクティビティに0を使用しています。なぜなら、私は新しい(アニメーションは実行されません)。私も活動に入るためのアニメーションを使用している場合は、そのようなように、(両方のアニメーションが実行されている)作品:

overridePendingTransition (R.anim.slide_out , R.anim.slide_up); 

どこR.anim.slide_out

<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="100%" 
     android:toYDelta="0%" /> 

</set> 

どれでもアイデア?それが入ってくるの活動の上にレンダリングされるように、私は、Android 4.1.2とAndroid 4.0.4

答えて

12

に取り組んでいます

は、あなたの出口のアニメーションを変更します。

R.anim.slide_up

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:zAdjustment="top"> 

    <translate 
     android:duration="1000" 
     android:fromYDelta="0%" 
     android:toYDelta="100%" /> 

</set> 

次に、あなたが最初にアニメーションを設定するために何をしていた行うことができます。

overridePendingTransition (0 , R.anim.slide_up); 
3

私は正確に同じ遷移と、このようなアニメーションが私のために動作しています

<?xml version="1.0" encoding="utf-8"?> 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:interpolator="@android:anim/accelerate_interpolator" 
android:fromYDelta="0%" android:toYDelta="100%" android:zAdjustment="top" 
android:duration="300" /> 
+1

これはまったく同じ移行ではないためです。 zAdjustment = "top"プロパティセットがあります。このプロパティセットを使用すると、デフォルトアニメーションが終了時に再生されるので、終了アニメーションを入力アニメーションの上に再生できます。 – MCeley

+0

これがポイントです:) – Zielony

1

は、これがデフォルトのアニメーションを無効にして、何のアニメーションを行いませんstartActivity

overridePendingTransition(0,0); 

後に以下の行を使用します。あなたが好きな場合は、カスタムアニメーションを与えることもできます

overridePendingTransition(R.anim.animation1,R.anim.animation2); 
0

アクティビティの開始を呼び出す場合は、インテントを変更する必要があります。 ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(AlbumListActivity.this); startActivity(intent, options.toBundle());

あなたがsetupTransitions()に、専用のメソッドを持っている場合あなたはonCreate()

getWindow().setEnterTransition(new Slide(Gravity.RIGHT).setDuration(800)); 

重力に入れてもそうで、そこに次の2行のコードを置くことができます。右は、次のアクティビティを開始する方向を決定するものです。 setDuration()メソッドはオプションです。私はそれを使用したスムーズなトランジションのために、あなたはする必要はありません。

さまざまなGravityとsetDurationプロパティで遊んでもっと詳しく調べてください。

関連する問題