Do these modifications to your animation files:
enter.xml:
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="500" android:fromXDelta="100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> |
exit.xml:
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="500" android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="-100%" android:toYDelta="0%" /> </set> |
You’ll have your second activity sliding in from right to the left.
For a better understadnig on how to play around with the fromXDelta and toXDelta values for the animations, here is a very basic illustration on the values:
This way you can easily understand why you add android:fromXDelta=”0%” and android:toXDelta=”-100%” for your current activity. And this is because you want it to go from 0% to the -100% position.
[EDIT]
So if you want to open ActivityB from ActivityA you do the following(let’s say you have a button):
1 2 3 4 5 6 7 |
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(ActivityA.this, ActivityB.class)); overridePendingTransition(R.anim.enter, R.anim.exit); } }); |
Now, if you want to have the “backwards” animation of the first one, when you leave Activity B, you’ll need 2 new animation files and some code in the ActivityB’s onBackPressed method, like this:
First the animation files: left_to_right.xml:
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="500" android:fromXDelta="-100%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="0%" /> </set> |
right_to_left.xml:
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:duration="500" android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="100%" android:toYDelta="0%" /> </set> |
And in ActivityB do the following:
1 2 3 4 5 |
@Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left); } |
Also if you have up navigation enabled, you’ll have to add the animation in this case as well:
You enable UP navigation like this:
1 2 3 4 5 |
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); } |
And this is how you handle the animation in this case too:
1 2 3 4 5 6 7 8 9 10 11 12 |
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: //NavUtils.navigateUpFromSameTask(this); finish(); overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left); return true; } return super.onOptionsItemSelected(item); } |