2013年6月8日土曜日

Activity遷移時のアニメーションを無効化する方法

やり方

Activityクラスの下記のメソッドを使う。
public void overridePendingTransition (int enterAnim, int exitAnim)
Activity | Android Developers
http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition(int, int)

公式リファレンスに
Parameters
enterAnimA resource ID of the animation resource to use for the incoming activity. Use 0 for no animation.
exitAnimA resource ID of the animation resource to use for the outgoing activity. Use 0 for no animation.
とあるので
引数enterAnim/exitAnimに0を指定すると、Activity遷移時のアニメーションを無効化できる。

コード

MainActivityのButtonからSubActivityを呼び出す構成。
SubActivityからBackキーで戻って来る時のアニメーションも無効化するため
SubActivityのfinish()をオーバーライドしてoverridePendingTransition()を呼んでいる。

MainActivity.java
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, SubActivity.class));
                overridePendingTransition(0, 0);
            }
        });
    }

}

SubActivity.java
public class SubActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub);
    }

    @Override
    public void finish() {
        super.finish();

        overridePendingTransition(0, 0);
    }

}
※Layout XMLは割愛

まとめ

今回のやり方は、下記の動画で知りました。

この動画のサンプルコードはChet HaaseさんのGoogle+のリンクからダウンロードできます。
https://plus.google.com/104755487586666698979/posts/i38BBQnjoFU

この他にも有用な動画があるので、Android Developers LiveのDEV.BYTESシリーズおすすめです。
DevBytes - YouTube
http://www.youtube.com/playlist?list=PLWz5rJ2EKKc_XOgcRukSoKKjewFJZrKV0

0 件のコメント:

コメントを投稿