android切屏动画overridePendingTransition的应用
Activity的切换动画指的是从一个activity跳转到另外一个activity时的动画。
它包括两个部分:
一部分是第一个activity退出时的动画;
另外一部分时第二个activity进入时的动画;
在Android的2.0版本之后,有了一个函数来帮我们实现这个动画。这个函数就是
overridePendingTransition
这个函数有两个参数,一个参数是第一个activity退出时的动画,另外一个参数则是第二个activity进入时的动画。
这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意:
1.它必需紧挨着startActivity()或者finish()函数之后调用
2.它只在android2.0以及以上版本上适用
它包括两个部分:
一部分是第一个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;
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进来的动画,旧的推出的动画)
}
}
@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;
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
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;
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);
}
}
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);
}
}
浙公网安备 33010602011771号