I am working on one demo application where I want to apply animation whenever app start any activity
. I wrote below code but this is for to animate the activity from left to right.
left_to_right.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="-100%" android:toXDelta="0%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="500"/> </set>
right_to_left.xml
<?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>
I am here starting an activity
like this
startActivity(new Intent(this, LoginActivity.class)); overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
I want to achieve an animation right to left. How this can be done.
Thanks in advance.
Android's transition framework allows you to animate all kinds of motion in your UI by simply providing the starting layout and the ending layout.
Do these modifications to your animation files:
enter.xml:
<?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:
<?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 understanding 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):
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:
<?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:
<?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:
@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:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); }
And this is how you handle the animation in this case too:
@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); }
Also be aware that even if your code is okay, your phone might have animation turned off. To turn then on do the following:
Does this help?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With