关于android中activity的动画切换,是很多地方都会用到的,在这我粗略的说一下我的理解

动画大体上分四种:alpha、rotate、translate、scale

有两种方法,

1.在代码中编写动画 (在游戏中用得多)

2.在xml文件中编写 (在应用中用得多)

这里主要讲的xml文件的编写。

一。首先在工程的res目录下新建一个anim文件夹

1.alpha

进入

 

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha 
     android:fromAlpha="0.0" 
      android:toAlpha="1.0" 
      android:duration="500" 
/> 
 </set> 

退出

 

<?xml version="1.0" encoding="utf-8"?>

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

     <alpha

         android:fromAlpha="1.0"

         android:toAlpha="0.0"

         android:duration="500"

         />

 </set>

 

2.rotate

进入

 

<?xml version="1.0" encoding="utf-8"?>

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

     <rotate

         android:duration="500"

         android:fromDegrees="-90"

         android:interpolator="@android:anim/linear_interpolator"

         android:pivotX="0%"

         android:pivotY="0%"

         android:toDegrees="0" />

 </set>

退出

 

<?xml version="1.0" encoding="utf-8"?>

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

     <rotate

         android:interpolator="@android:anim/linear_interpolator"

         android:duration="500"

         android:fromDegrees="0"

         android:toDegrees="90"

         android:pivotX="0%"

         android:pivotY="0%"

         />

 </set>

 

3.translate

进入

 

<?xml version="1.0" encoding="utf-8"?>

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

     <translate 

         android:interpolator="@android:anim/linear_interpolator"

         android:fromXDelta="480"

         android:toXDelta="0"

         android:fromYDelta="800"

         android:toYDelta="0"

         android:duration="500"

         />

 </set>

退出

 

<?xml version="1.0" encoding="utf-8"?>

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

     <translate 

         android:interpolator="@android:anim/linear_interpolator"

         android:fromXDelta="0"

         android:toXDelta="-480"

         android:fromYDelta="0"

         android:toYDelta="-800"

         android:duration="500"

         />

 </set>

4.scale

进入

 

<?xml version="1.0" encoding="utf-8"?>

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

     <scale 

         android:interpolator="@android:anim/linear_interpolator"

         android:fromXScale="0.0"

         android:toXScale="1.0"

         android:fromYScale="0.0"

         android:toYScale="1.0"

         android:pivotX="50%"

         android:pivotY="50%"

         android:duration="500"

         />

 </set>

 

退出

 

<?xml version="1.0" encoding="utf-8"?>

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

     <scale 

         android:interpolator="@android:anim/linear_interpolator"

         android:fromXScale="1.0"

         android:toXScale="0.0"

         android:fromYScale="1.0"

         android:toYScale="0.0"

         android:pivotX="50%"

         android:pivotY="50%"

         android:duration="500"

         />

 </set>

 

二。加载动画的类Animation.java(方便在Activity中随机选择一组进出的动画)

package com.youchuang.utils;

 

 import com.youchuang.activity.R;

 

 import android.app.Activity;

 import android.content.Context;

 

 public class Animation{

  private Context context;

  public Animation(Context context)

  {

  this.context = context;

  }

  public void change(int id) {

  switch (id) {

  case 1:

  //淡入淡出

  ((Activity) context).overridePendingTransition(R.anim.enter_alpha,R.anim.out_alpha);

  break;

  case 2:

  //旋入淡出

  ((Activity) context).overridePendingTransition(R.anim.enter_rotate, R.anim.out_alpha);

  break;

  case 3:

  //旋入旋出

  ((Activity) context).overridePendingTransition(R.anim.enter_rotate, R.anim.out_rotate);

  break;

  case 4:

  ((Activity) context).overridePendingTransition(R.anim.enter_scale, R.anim.out_translate);

  break;

  }

  }

 }

 

三。Activity文件

1.InActivity.java

package com.youchuang.activity;

 

 import android.app.Activity;

 import android.content.Intent;

 import android.os.Bundle;

 import android.view.View;

 import android.widget.Button;

 

 import com.youchuang.utils.Animation;

 

 public class InActivity extends Activity {

  private Button btn;

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_in);

 

  final Animation anim = new Animation(this);

 

  btn = (Button)findViewById(R.id.button_in);

  btn.setOnClickListener(new View.OnClickListener() {

  public void onClick(View v) {

  Intent intent = new Intent(InActivity.this, OutActivity.class);

  startActivity(intent);

  anim.change(4);

 

  }

  });

  }

 }

 布局文件:activity_in.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:background="@drawable/login_bg"

     android:orientation="vertical" >

 

     <Button

         android:id="@+id/button_in"

         android:layout_width="wrap_content"

         android:layout_height="wrap_content"

         android:text="@string/in" />

 

 </LinearLayout>

2.OutActivity.java

 

package com.youchuang.activity;

 

 import android.app.Activity;

 import android.os.Bundle;

 

 public class OutActivity extends Activity {

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_out);

  }

 

 }

 

布局文件:activity_out.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:background="@drawable/register_bg"

     android:orientation="vertical" >

 

     <Button

         android:id="@+id/button_out"

         android:layout_width="wrap_content"

         android:layout_height="wrap_content"

         android:text="@string/out" />

 

 </LinearLayout>