Android Left to Right slide animation
Use this xml in res/anim/
This is for left to right animation:
<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="700"/></set>
This is for right to left animation:
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="700" /></set>
In your coding use intent like for left to right:
this.overridePendingTransition(R.anim.animation_enter, R.anim.animation_leave);
In your coding use intent like for right to left
this.overridePendingTransition(R.anim.animation_leave, R.anim.animation_enter);
If you want the transition work for whole application you can create a rootacivity
and inherit it in the activity you need. In Root Activity's onCreate call overridePendingTransition
with desired direction. And onStart
call overridePendingTransition
with other direction if activity is resumed. Here I am giving full running code below.Correct me if I am wrong.
create this xml file on your anim folder
anim_slide_in_left.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="100%" android:toXDelta="0%" > </translate></set>
anim_slide_in_right.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="-100%" android:toXDelta="0%" > </translate></set>
anim_slide_out_left.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="0%" android:toXDelta="-100%" > </translate></set>
anim_slide_out_right.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="600" android:fromXDelta="0%" android:toXDelta="100%" > </translate></set>
RootActivity
import android.app.Activity;import android.os.Bundle;public class RootActivity extends Activity { int onStartCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); onStartCount = 1; if (savedInstanceState == null) // 1st time { this.overridePendingTransition(R.anim.anim_slide_in_left, R.anim.anim_slide_out_left); } else // already created so reverse animation { onStartCount = 2; } } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); if (onStartCount > 1) { this.overridePendingTransition(R.anim.anim_slide_in_right, R.anim.anim_slide_out_right); } else if (onStartCount == 1) { onStartCount++; } }}
FirstActivity
import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class FirstActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("First Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(FirstActivity.this, SecondActivity.class); startActivity(i); } }); }}
SecondActivity
import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class SecondActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("Second Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(SecondActivity.this, ThirdActivity.class); startActivity(i); } }); }}
ThirdActivity
import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class ThirdActivity extends RootActivity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView tv = (TextView) findViewById(R.id.tvTitle); tv.setText("Third Activity"); Button bt = (Button) findViewById(R.id.buttonNext); bt.setText("previous"); bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); }}
and finally Manifest
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.transitiontest" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.transitiontest.FirstActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.transitiontest.SecondActivity" android:label="@string/app_name" > </activity> <activity android:name="com.example.transitiontest.ThirdActivity" android:label="@string/app_name" > </activity> </application></manifest>