2017-04-27 23 views
0

私は、押したときに反対のスライド効果を持つようにAndroidの戻るボタンをプログラムしようとしています。overridePendingTransition(int、int)はonBackPressed()に何の効果もありません

私はMainActivity(a)を持っていますが、何かを押すとさらに別のMainActivity(b)が作成されます(別のコンテンツをプログラムで設定します)。 MainActivity(a)からMainActivity(b)に行くのは、正しい(右から左に)正しいです。

しかし、[戻る]ボタンをクリックすると、左から(つまり右に)スライドします。反対ですが、効果は上記と同じです。

@Override 
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) { 
    final Context thisContext = this; 
    YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() { 
     @Override 
     public void call(Animator animator) { 
      CelebritiesFragment celebritiesFragment = new CelebritiesFragment(); 
      celebritiesFragment.setIndex(viewHolder.index); 
      CelebritiesTabViewsStack.getInstance().push(celebritiesFragment); 
      Intent intent = new Intent(thisContext, MainActivity.class); 
      startActivity(intent); 
     } 
    }).delay(0).duration(250).playOn(viewHolder.mView); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right); 
// no effect, even if I use overridePendingTransition(0, 0); 
} 

私は問題の両方が同じMainActiityクラスですだと思います。私はここに私のコードです

背中を押すと、(左から)前の画面に戻しますアニメーションを持っていると思います。この問題を解決するには?

答えて

0

多くの実験の後、私は解決策を自分で見つけ:

@Override 
public void onIndexFragmentInteraction(final IndexesRecyclerViewAdapter.ViewHolder viewHolder) { 

    final Context thisContext = this; 
    YoYo.with(Techniques.Pulse).onEnd(new YoYo.AnimatorCallback() { 
     @Override 
     public void call(Animator animator) { 
      CelebritiesFragment celebritiesFragment = new CelebritiesFragment(); 
      celebritiesFragment.setIndex(viewHolder.index); 
      CelebritiesTabViewsStack.getInstance().push(celebritiesFragment); 
      Intent intent = new Intent(thisContext, MainActivity.class); 
      //finish(); 
      startActivity(intent); 
      overridePendingTransition(R.animator.slide_in_right, R.animator.slide_out_left); 
     } 
    }).delay(0).duration(250).playOn(viewHolder.mView); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(0, R.animator.slide_out_right); 
} 
+0

私が言ったように、あなたは両方のパラメータで2つの等しいアニメーションを渡していました。 –

0

私はいつもonFinish方法でアニメーションのこの種を使用します。

public void finish() { 
     super.finish(); 
     overridePendingTransition(R.animator.slide_out_left, R.animator.slide_out_right); 
    } 

また、overridePendingTransition署名を見てみましょう、それはパラメータとして2つのアニメーションをとります。

最初に、受信アクティビティに使用するアニメーションリソースのリソースID。アニメーションがない場合は0を使用します。 最後のものは、発信アクティビティに使用するアニメーションリソースのリソースIDです。アニメーションがない場合は0を使用します。

+0

おかげで、それは動作しません。 – ikevin8me

+0

同じアニメーションを最初のパラメータに入れ、2番目のアニメーションをその状況で見てください –

関連する問題