在Android开发过程中,有时候会要求Activity之间切换能够有动画效果。这时候我们一般在StartActivity(intent)之后使用overridePendingTransition (int enterAnim, int exitAnim)。
第一个参数enterAnim表示新Activity进入时的动画。
第二个参数exitAnim表示原先旧的Activity退出时的动画。
如图所示,为手机页面位置示意图。
从位置2到位置1代码:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" <span style="font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun; font-size: 0.9em;">android:interpolator="@android:anim/accelerate_interpolator"></span><span style="font-size: 0.9em; font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun;"><translate android:fromXDelta="0%p" android:toXDelta="-100%p"</span><span style="font-size: 0.9em; font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun;"> android:duration="500" /></span><span style="font-size: 0.9em; font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun;"></set></span>
从位置3到位置2代码:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android :anim/accelerate_interpolator"><translate android:fromXDelta="100%p" android:toXDelta="0%p"android:duration="500" /></set>
Android代码如下:
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button = (Button)findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(<span style="font-size: 0.9em; font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun;">FirstActivity </span><span style="font-size: 0.9em; font-family: 'Microsoft YaHei', Verdana, sans-serif, SimSun;">.this, SecondActivity.class);</span>
startActivity(intent);
//设置切换动画,从右边进入,左边退出
overridePendingTransition(R.anim.in_from_right, R.anim.out_to_left);
}
});
}
}
当然,这只是进入新Activity时的动画效果,采取的是从右进入。
如果在按返回键的时候也要有动画效果,可以在OnBackPressed()方法中调用overridePendingTransition(int one,int second);采取的动画效果可以是从左边出来。即上图位置1到位置2,位置2到位置3。