37

新しいアクティビティに移動するのに、アクティビティが左にスライドして新しいアクティビティが画面に表示されるように見せるための最良の方法は何ですか?インテントを使用して新しいアクティビティを呼び出していますが、アプリケーションを軽量にしたい場合は、それを行う方法ですか?

もう少し詳しく説明すると、Androidスマートフォンでは、ホームメニーを右に向けてビューをスワイプしてから、左からフレンドストリームに入り、画面上で実行できます。ボタンクリックでアプリでやりたいのですが、それは私が求めている「スライド」です。ありがとう!

4

5 に答える 5

91

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);
}
于 2011-01-26T17:41:51.907 に答える
4

left_slide_out.xmlを使用して(Joshのright_slide_out.xmlのtoXDeltaを変更して-100%pを読み取る)、古いアクティビティを左側に表示しないようにすることができます(また、両方のアニメーションで同じ期間を使用できます)。

于 2012-07-13T10:35:33.523 に答える
3

ジェムズは正しいです。デフォルトでは、新しいインテントを起動すると、スライドアニメーションが表示されます。

よりカスタムなアニメーションを探している場合は、overridePendingTransitionを使用できます。APIレベル5で追加されたことを覚えておいてください。使用例については、このAPIデモを参照してください。

于 2011-01-26T17:25:41.710 に答える
3

はい、インテントを使用することは別のアクティビティを開始するための標準的な方法であり、通常はあなたが言及したスライド的なことを行います。例:startActivity(new Intent(this、myNextActivity.class)); それをします。

于 2011-01-26T16:42:52.403 に答える
1

開始アニメーションと終了アニメーションが何であるかについては、少し混乱があります。まだそれについて熟考している人のために、ここにテンプレートがあります。

overridePendingTransition(
    enterAnimationForCalledActivity, 
    exitAnimationForCallingActivity
);

これはおそらく少し空気をきれいにする必要があります。

于 2018-03-09T09:17:07.540 に答える