android 애니메이션 전환 (슬라이딩 효과) 실례

22215 단어 android
실현 효과: 스크린 슬라이딩 전환 효과, 모두가 알고 있는 효과는 캡처하지 않겠습니다.
구현 단계:
1. 프로젝트인터페이스 만들기, 내가 선택한 버전은 안드로이드3.0,
Application Name: Animation
Package Name: zf.itcast.animation
Create Activity:MainActivity
2.main.xml에서 두 개의Activity를 정의하고 스타일을 설정합니다
<?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" >

    <!--          -->

    <ViewFlipper 

        android:id="@+id/viewFlipper"

        android:layout_width="fill_parent"

        android:layout_height="fill_parent"

    >

        <!--     -->

        <LinearLayout 

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"

        >

            <Button

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="@string/hello" 

                android:onClick="openActivity"/>

            <TextView 

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="@string/first_acvivity"

                />

        </LinearLayout>

        <!--     -->

        <LinearLayout 

            android:layout_width="fill_parent"

            android:layout_height="fill_parent"

            android:background="#339900"

        >

            <TextView 

                android:layout_width="wrap_content"

                android:layout_height="wrap_content"

                android:text="@string/second_acvivity"

                />

        </LinearLayout>

    </ViewFlipper>



</LinearLayout>

3. 클래스MainActivity에서 애니메이션 전환 방법 설정
package zf.itcast.animation;



import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.MotionEvent;

import android.view.View;

import android.view.animation.Animation;

import android.view.animation.AnimationUtils;

import android.widget.ViewFlipper;



public class MainActivity extends Activity {

    //    ViewFlipper

    private ViewFlipper viewFlipper;

    //              

    private float startX;

    //        

    private Animation enter_lefttoright;

    //        

    private Animation exit_lefttoright;

    //        

    private Animation enter_righttoleft;

    //        

    private Animation exit_righttoleft;

    

    

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        //      

        enter_lefttoright = AnimationUtils.loadAnimation(this, R.anim.enter_lefttoright);

        exit_lefttoright = AnimationUtils.loadAnimation(this, R.anim.exit_lefttoright);

        enter_righttoleft = AnimationUtils.loadAnimation(this, R.anim.enter_righttoleft);

        exit_righttoleft = AnimationUtils.loadAnimation(this, R.anim.exit_righttoleft);

        

        viewFlipper = (ViewFlipper)findViewById(R.id.viewFlipper);

    }

    

    

    /**

     * <p>  :      </p>

     * @author   

     * @date 2012-5-30

     */

    @Override

    public boolean onTouchEvent(MotionEvent event) {

        //    ,MotionEvent.ACTION_DOWN          

        if(event.getAction() == MotionEvent.ACTION_DOWN) {

            //           

            startX = event.getX();

            //

        } else if(event.getAction() == MotionEvent.ACTION_UP) {

            //

            float endX = event.getX();

            //

            if(endX > startX) {

                //        

                viewFlipper.setInAnimation(enter_lefttoright);

                //        

                viewFlipper.setOutAnimation(exit_lefttoright);

                //     

                viewFlipper.showNext();

            //

            } else if (endX < startX) {

                viewFlipper.setInAnimation(enter_righttoleft);

                viewFlipper.setOutAnimation(exit_righttoleft);

                //     

                viewFlipper.showPrevious();

            }

            return true;

        }

        return super.onTouchEvent(event);

    }







    /**

     * <p>  :    Activity</p>

     * @author   

     * @date 2012-5-30

     * @param 

     * @return void

     */

    public void openActivity(View v){

        Intent intent = new Intent(this, OtherActivity.class);

        startActivity(intent);

        //            ,  anim       enteralpha(    ) exitalpha(    )    (  :  xml           )

        //           ,     enteralpha exitalpha    

        this.overridePendingTransition(R.anim.enteralpha,R.anim.exitalpha);

    }

}

4.res 폴더 아래에 anim 폴더를 만들고 4개의 애니메이션 효과를 새로 만듭니다. 각각:enterlefttoright.xml(왼쪽에서 오른쪽으로 효과), exitlefttoright(왼쪽에서 오른쪽으로 애니메이션 종료), enterrighttoleft (오른쪽에서 왼쪽으로 애니메이션 들어가기),exitrighttoleft(애니메이션을 오른쪽에서 왼쪽으로 종료) 코드는 다음과 같습니다.
enter_lefttoright.xml (왼쪽에서 오른쪽으로 들어가는 효과)
<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

     android:shareInterpolator="false">

    <!--                x   -->

    <translate 

        android:fromXDelta="-100%p"

        android:toXDelta="0"

        android:duration="2000"

    />

</set>

exit_lefttoright(왼쪽에서 오른쪽으로 애니메이션 종료)
<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

     android:shareInterpolator="false">

    <!--           x   -->

    <translate 

        android:fromXDelta="0"

        android:toXDelta="100%p"

        android:duration="2000"

    />

</set>

enter_righttoleft (오른쪽에서 왼쪽으로 애니메이션 들어가기)
<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

     android:shareInterpolator="false">

    <!--                x   -->

    <translate 

        android:fromXDelta="100%p"

        android:toXDelta="0"

        android:duration="2000"

    />

</set>

exit_righttoleft (오른쪽에서 왼쪽으로 애니메이션 종료)
<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

     android:shareInterpolator="false">

    <!--           x   -->

    <translate 

        android:fromXDelta="0"

        android:toXDelta="-100%p"

        android:duration="2000"

    />

</set>

5.string에 관하여.xml 파일
<?xml version="1.0" encoding="utf-8"?>

<resources>



    <string name="hello">   Activity</string>

    <string name="app_name">Animation</string>

    <string name="new_window">   </string>

    <string name="new_activity">   Activity</string>

    <string name="first_acvivity">   </string>

    <string name="second_acvivity">   </string>

</resources>

6. 성공, 실행은 효과를 보자~~~

좋은 웹페이지 즐겨찾기