46

私のアクティビティでは、うまく機能している次のクリック リスナーを持つボタンがあります。

final ImageButton startOverButton = (ImageButton) findViewById(R.id.start_over_button);
startOverButton.setOnClickListener(new View.OnClickListener(){

    @Override
    public void onClick(final View v) {

        finish();//go back to the previous Activity
        overridePendingTransition(R.anim.comming_in, R.anim.comming_out);
    }
});

前のアクティビティへの復帰を思い通りにアニメーション化します。ただし、ユーザーが Android のデフォルトの戻るボタンを押しても、アニメーションはトリガーされません。私の質問は、アニメーション コードoverridePendingTransition(R.anim.comming_in, R.anim.comming_out);をどこに置くべきかということです。ユーザーが私のボタンをクリックしたときとデフォルトのAndroidの戻るボタンの両方でこのアニメーションがトリガーされるようにするには?

単純な試みとして、 overridePendingTransition(R.anim.comming_in, R.anim.comming_out);を配置しようとしました。onDestroy()メソッドのコード行ですが、機能しませんでした。

前もって感謝します!

4

4 に答える 4

112

おそらく、アクティビティの onBackPressed() メソッドでこの作業を行うことができます。

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.comming_in, R.anim.comming_out);   
}
于 2012-08-21T03:04:22.227 に答える
17

基本的に onBackPressed をオーバーライドするのは適切なアプローチですが、そこから finish() を呼び出すよりも、super.onBackPressed() を呼び出してから overridePendingTransition を追加する方が良いと言えます。これにより、継承ルールとの一貫性が少し高まります。

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.comming_in, R.anim.comming_out);   
}
于 2013-09-13T14:19:21.397 に答える