[안드로이드] 애니메이션 효과를 이용한 페이지 슬라이딩

2018. 1. 17. 20:01 안드로이드/레이아웃(Layout)
<페이지 슬라이딩>

* 실습 - 애니메이션 효과를 이용하여 페이지 슬라이딩

 




1. 애니메이션을 위한 디렉토리와 파일 생성

- /res/anim 디렉토리 생성



- Animation Resource File 생성



2. 애니메이션이 정의되는 XML 파일 작성

(1) pull_in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromYDelta="-100%"
    android:toYDelta="0%"
    android:interpolator="@android:anim/decelerate_interpolator"/>


(2) pull_in_right.xml

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


(3) push_out_left.xml

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


(4) push_out_right.xml

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3000"
    android:fromYDelta="0%"
    android:toYDelta="100%"
    android:interpolator="@android:anim/decelerate_interpolator"/>


3. 기존 액티비티에서 새로운 액티비티 시작(IntentDemo.java, IntentDemo2.java)
: startActivity() 호출 후, overridePendingTransition(incoming 액티비티, outgoing 액티비티) 메소드 추가
package com.example.chae.finaltest;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
 
public class IntentDemo extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_intentdemo);
    }
 
    //nextBtn 눌렸을 때 실행되는 메소드
    public void nextBtnClicked(View v){
 
        //명시적으로 인텐트 객체 생성
        Intent intent = new Intent(IntentDemo.this, IntentDemo2.class);
        startActivity(intent); //액티비티 활성화
        overridePendingTransition(R.anim.pull_in_left, R.anim.push_out_right);
    }
}


package com.example.chae.finaltest;
 
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
 
public class IntentDemo2 extends AppCompatActivity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_secondintent);
    }
 
    public void backBtnClicked(View v){
        Intent intent = new Intent(IntentDemo2.this, IntentDemo.class);
        startActivity(intent);
        overridePendingTransition(R.anim.pull_in_right, R.anim.push_out_left);
    }
}


출처 : http://blog.naver.com/kcwwck77/220559840965