アニメーションファイルを4つ作成して画面遷移の際に指定するだけ
startActivityForResult・・・の下に
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
の一文を加える
メイン画面のActivityファイル
package com.slide;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class SlideTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void ButtonOnClick(View v){
Intent subactivity = new Intent(this,com.slide.SubActivity.class);
startActivityForResult(subactivity, R.id.button1);
overridePendingTransition(R.anim.slide_in_right, R.anim.slide_out_left);
}
}
サブ画面のActivityファイル
package com.slide;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class SubActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);
}
public void ButtonOnClick(View v){
Intent subactivity = new Intent(this,com.slide.SlideTestActivity.class);
startActivityForResult(subactivity, R.id.button1);
overridePendingTransition(R.anim.slide_in_left,R.anim.slide_out_right);
}
}
メイン画面のレイアウトファイル
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="メイン画面" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="次へ" android:onClick="ButtonOnClick"/>
</LinearLayout>
サブ画面のレイアウトファイル
sub.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="サブ画面" />
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="戻る" android:onClick="ButtonOnClick"/>
</LinearLayout>
アニメーションファイルを用意する
resフォルダの中にanimフォルダを作成して、そこにxmlファイルを作成する。
次のアクティビティが右から登場
slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="100%p"
android:toXDelta="0" />
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
現在のアクティビティが左に消える
slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="0"
android:toXDelta="-100%p" />
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
元のアクティビティが左から登場
slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="-100%p"
android:toXDelta="0" />
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
二つ目のアクティビティが右に退場
slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator" >
<translate
android:duration="300"
android:fromXDelta="0"
android:toXDelta="100%p" />
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
サブ画面をマニフェストファイルに追加するのを忘れないようにする。
ダウンロード