カスタマイズ

【Android Studio】Activity 画面遷移にアニメーションをつける方法

 

今回はアクティビティを開くとき(画面遷移をするとき)にアニメーションをつける方法を紹介します。

紹介するアニメーションは

  • fadeIn, fadeOut(フェードイン、フェードアウト)
  • slideIn, slideOut(スライドイン、スライドアウト)

の2種類です。
 

デモ動画

 
 

通常 Activity 間の移動(画面遷移)を行うときは、このように書きます。

startActivity(new Intent(this, MainActivity.class));

今回紹介するアニメーションは、このコードにたった1行追加するだけで利用できます。

簡単なのでぜひ利用してみてください🙂

 


 

開発環境

Android Studio 3.4
Android Emulator Nexus5 (API 27)

 
 

動画

【Android Studio】Start an Activity with Slide & Fade Animation

 
 

解説

プロジェクトの用意

このサンプルでは Activity Animation という名前でプロジェクトを作成して MainActivity.java と activity_main.xml があることを前提に進めていきます。

また、遷移先のアクティビティとして SecondActivity.java と activity_second.xml を作成しています。

ご自身のプロジェクトに合わせて変更してください。

 
 

画面遷移するボタンを用意

まずは画面遷移するための

  • デフォルト
  • フェード
  • スライド

の3つのボタンを用意します

activity_main.xml を開いて、以下のようにコードを書きます。

 

このような画面になります。


 

18・26・34行目

それぞれのボタンに id を設定しています。
このあと onClickListener を使ってボタンが押された時の処理を書いていくため、id を設定しておきます。

 
 

クリックリスナーをセット

それぞれのボタンにクリックリスナーをセットします。

MainActivity.java を開いて、7行目の implements View.OnClickListener、15~17・20~23行目を追加します。

 

15~17行目

クリックリスナーをセットすると、それぞれのボタンが押された時に 21行目の onClick メソッドが呼び出されるようになります。

 
 

ボタンが押された時の処理

MainActivity.java の onClick メソッドに3~13行目を追加します。

 

3行目

startActivity(new Intent(this, SecondActivity.class));

どのボタンを押しても必要になる画面遷移のコードです。

「デフォルト」ボタンを押した時はこのコードしか実行されません。
 

「フェードイン・アウト」が押された時

「フェードイン・アウト」ボタンが押された時は

startActivity(new Intent(this, SecondActivity.class));
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

が実行されて、フェードアニメーション付きの画面遷移になります。

 

「スライドイン・アウト」が押された時

「スライドイン・アウト」ボタンが押された時は

startActivity(new Intent(this, SecondActivity.class));
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);

が実行されて、スライドアニメーション付きの画面遷移になります。

 
 

完成

 
 

上手く動かない場合は、以下のサンプルコードを参考にしてみてください。
 

activity_main.xml

 

MainActivity.java

 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、携帯アプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です