5

標準アクティビティでデフォルトのスライドイン/アウト効果を使用し、いくつかの特定のアクティビティでフェードイン/アウトを使用するアプリがあります。

新しい Android 4.X (ICS) には別のデフォルトがあり、正確にフェードイン/フェードアウトしていることに気付きました。

標準アクティビティでスライド イン/アウト効果を定義するにはどうすればよいですか?

私はそれを次のように定義しようとしています:

@Override
public void onCreate(Bundle savedInstanceState)
{
    this.overridePendingTransition(0, android.R.anim.slide_in_left);                  
    super.onCreate(savedInstanceState);
}

@Override
public void onPause()
{
    super.onPause();
    overridePendingTransition(android.R.anim.slide_out_right, 0);
}

私が使用しているフェードイン/アウト効果を再現するには:

@Override
public void onCreate(Bundle savedInstanceState)
{
    this.overridePendingTransition(0, android.R.anim.fade_in);                  
    super.onCreate(savedInstanceState);
}

@Override
public void onPause()
{
    super.onPause();
    overridePendingTransition(android.R.anim.fade_in, 0);
}

しかし、それをうまく再現することができませんでした。

また、onCreate と onPause でこのコードを使用していますが、これは正しいですか? それとももっといい置き場所ありますか?

ありがとう

PS: このNew Android 4.0 Screen Transitions Between Activitiesを見てきましたが、回答が提供されました。

4

1 に答える 1

10

新しいアクティビティを開始した直後に overridePendingTransition() を呼び出す必要があるため、たとえば、startActivity(intent) の後に呼び出します。デフォルトを作成するには、Activity を拡張し、startActivity、onBackPressed() などをオーバーライドしてトランジションをオーバーライドするクラスを作成できます。例えば:

public class MyActivity extends Activity {

@Override
public void onBackPressed() {
    super.onBackPressed();
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition);
}

@Override
public void startActivity(Intent intent) {
    super.startActivity(intent);
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition);
}

@Override
public void finish() {
    super.finish();
    overridePendingTransition(R.anim.slide_in_transition,R.anim.slide_out_transition);
}



}

次に、アクティビティの Activity の代わりに MyActivity を拡張するだけで、トランジションはすべてデフォルトでスライドします。

于 2012-04-11T17:32:35.447 に答える