0

アクティビティのカスタムアニメーションが必要なアプリケーションを開発しています。具体的には、1つのフラグメントと1つのアクティビティがあります。ユーザーがフラグメント内のアイテムをクリックするListViewと、ユーザーは新しいアクティビティに移動します。このアクティビティは、デフォルトのアニメーションではなく、下から表示される必要があります(フェードインすると思います)。私はそれをグーグルで検索し、いくつかの解決策を見つけましたが、それらのほとんどはある活動から別の活動へのものです。だから彼らは使用します:

Intent intent = new Intent(this.getActivity() ,x.class);
getActivity().startActivity(intent);
overridePendingTransition(R.anim.slide_in, R.anim.slide_out);

フラグメントから2番目のアクティビティを呼び出しているため、Androidはこのメソッドをサポートしていません(overridePendingTransition)。誰かがこれを克服する方法を教えてもらえますか?簡単に言うと、ユーザーがフラグメントから2番目のアクティビティに移動する場合、2番目のアクティビティは通常のアニメーションではなく下から来る必要があります。

前もって感謝します。

4

1 に答える 1

0

アニメーションで呼び出されるアクティビティでは、これを使用する必要があります:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        overridePendingTransition(R.anim.anim_right_to_center, R.anim.anim_hold);
        setLayoutContent(R.layout.myactivtiy);
}

アニメーションを使いたい場合は、これを使用する必要があります。

@Override
    public void onPause(){
        //todo detach from updater
        super.onPause();
        overridePendingTransition(R.anim.anim_hold, R.anim.anim_center_to_right);
    }

ここで R.anim.center_to_right :

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="500"
       android:fromXDelta="100%"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toXDelta="0%">

ここで R.anim.anim_hold :

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="500"
       android:fromXDelta="0%"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toXDelta="0">

于 2012-11-13T17:44:08.297 に答える