2011年11月20日日曜日

画面遷移-アニメーション



アニメーションファイルを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>

サブ画面をマニフェストファイルに追加するのを忘れないようにする。
ダウンロード

関連記事

0 件のコメント:

コメントを投稿