android切屏动画overridePendingTransition的应用

Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。
它包括两个部分:
一部分是第一个activity退出时的动画;
另外一部分时第二个activity进入时的动画;

在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是
overridePendingTransition
这个函数有两个参数,一个参数是第一个activity退出时的动画,另外一个参数则是第二个activity进入时的动画。

这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意:
1.它必需紧挨着startActivity()或者finish()函数之后调用
2.它只在android2.0以及以上版本上适用
 
下面例子实现新Activity过度动画
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void openActivity(View v){
      Intent intent = new Intent(this, OtherActivity.class);
      startActivity(intent);
      overridePendingTransition(R.anim.enter, R.anim.exit);//(新Activity进来的动画,旧的推出的动画)
    }
}
下面是页面切换效果(切屏)
package an.itcast.animation;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ViewFlipper;
public class MainActivity extends Activity {
private float startX;
private ViewFlipper viewFlipper;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        viewFlipper= (ViewFlipper) this.findViewById(R.id.viewFlipper);
    }

   @Override
   public boolean onTouchEvent(MotionEvent event) {
     switch (event.getAction()) {
       case MotionEvent.ACTION_DOWN:
         event.getX();
             startX= event.getX();
       break;
       case MotionEvent.ACTION_UP:
       if(event.getX()>startX){
          viewFlipper.setInAnimation(this, R.anim.in_lefttoright);//动画左进来。
            viewFlipper.setOutAnimation(this, R.anim.out_lefttoright);//动画作出
            viewFlipper.showNext();
       }else if(event.getX()<startX) {
            viewFlipper.setInAnimation(this, R.anim.in_righttoright);//右进
            viewFlipper.setOutAnimation(this, R.anim.out_righttoright);//右出
            viewFlipper.showPrevious();
       }
          break;
        }
  // TODO Auto-generated method stub
  return super.onTouchEvent(event);
     } 
}
posted @ 2012-07-10 11:08  土金  阅读(203)  评论(0)    收藏  举报