通常我们在启动一个新的Activity的时候,效果都是很单一的。 当我们想每一个Activity都有一个独有的出场方式进入到当前主屏幕,那么整个应用给用户的感官效果会更好些。那么我们从何出着手来实现这些自己想要的效果呢?
通过查阅资料Activity类用一个overridePendingTransition(enterAnim, exitAnim);, 只要调用这个方法,我们传入相应的动画模式就Ok了。但是需要注意的是一定要是在执行完startActivity(intent);方法以后调用这个方法。
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
Button btn1 = (Button) findViewById(R.id.btn1);
btn1.setOnClickListener(clickBtn);
Button btn2 = (Button) findViewById(R.id.btn2);
btn2.setOnClickListener(clickBtn);
Button btn3 = (Button) findViewById(R.id.btn3);
btn3.setOnClickListener(clickBtn);
}
private OnClickListener clickBtn = new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = null;
switch (v.getId()) {
case R.id.btn1:
intent = new Intent(MainActivity.this, FirstActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.from_left_to_centre, R.anim.from_centre_to_right);
break;
case R.id.btn2:
intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.from_top_to_centre, R.anim.from_centre_to_bottom);
break;
case R.id.btn3:
intent = new Intent(MainActivity.this, ThirdActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.from_right_to_centre, R.anim.from_center_to_left);
break;
}
}
};
}
当我们开启一个新的Activity后,我们想要的退出当前Activity 回到上一个Activity。通常的操作是按backkey。这里需要重写一个父类的onKeyUp(int keyCode, KeyEvent event) 方法,也很上面一样,也需要注意是,在执行finish()方法后再执行overridePendingTransition(enterAnim, exitAnim)方法。
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.first);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
finish();
overridePendingTransition(R.anim.from_right_to_centre, R.anim.from_center_to_left);
break;
}
return false;
}
}
ps: 本工程是在320X480屏幕下运行的。