Как применить слайд-анимацию между двумя действиями в Android?

Я хочу, чтобы эффект слайда был слева направо, когда я изменяю действие, и для этого я использую следующий код, но не получаю никакого результата. Пожалуйста, исправьте меня. благодаря

В java оба файла

super.onCreate(savedInstanceState); overridePendingTransition(R.anim.fadein, R.anim.fadeout); setContentView(R.layout.main); 

Два файла в каталоге res / anim
fadein.xml

 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromAlpha="0.0" android:interpolator="@android:anim/slide_out_right" android:toAlpha="1.0" > </alpha> 

fadeout.xml

 <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="5000" android:fromAlpha="0.0" android:interpolator="@android:anim/slide_in_left" android:toAlpha="1.0" > </alpha> 

Solutions Collecting From Web of "Как применить слайд-анимацию между двумя действиями в Android?"

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.splashscreen); new Handler().postDelayed(new Runnable() { public void run() { /* Create an intent that will start the main activity. */ Intent mainIntent = new Intent(SplashScreen.this, ConnectedActivity.class); mainIntent.putExtra("id", "1"); //SplashScreen.this.startActivity(mainIntent); startActivity(mainIntent); /* Finish splash activity so user cant go back to it. */ SplashScreen.this.finish(); /* Apply our splash exit (fade out) and main entry (fade in) animation transitions. */ overridePendingTransition(R.anim.mainfadein,R.anim.splashfadeout); } }, SPLASH_DISPLAY_TIME); } 

Добавьте два файла в папку res / anim.

slide_in.xml

  <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_longAnimTime" android:fromXDelta="100%p" android:toXDelta="0%p"> </translate> 

slide_out.xml

  <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_longAnimTime" android:fromXDelta="0%p" android:toXDelta="-100%p"> </translate> 

И напишите следующий код в методе onCreate () следующей активности, который вы пройдете через Intent.

  overridePendingTransition(R.anim.slide_in, R.anim.slide_out); 

Вы можете перезаписать анимацию активности по умолчанию, и она работает лучше, чем overridePendingTransition. Я использую это решение, которое работает для каждой версии Android. Просто скопируйте вставку 4 файла и добавьте стиль 4 строки, как показано ниже:

Создайте «CustomActivityAnimation» и добавьте это в свою базовую тему «windowAnimationStyle».

 <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorPrimary</item> <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item> </style> <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity"> <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item> <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item> <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item> <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item> </style> 

Затем создайте папку с анимацией под папкой res, а затем создайте эти четыре файла анимации в папку анимации:

slide_in_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_out_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="-100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_in_left.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="-100%p" android:toXDelta="0" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

slide_out_right.xml

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromXDelta="0" android:toXDelta="100%p" android:duration="@android:integer/config_mediumAnimTime"/> </set> 

Если у вас возникнут какие-либо проблемы, вы можете загрузить мой образец проекта из github .

благодаря

Вы можете использовать overridePendingTransition в startActivity вместо onCreate . По крайней мере, это работает для меня!

См. Полный пример здесь . Это включает (обратную) анимацию onBackPressed, поэтому, возвращаясь к предыдущему действию! В вашем конкретном примере (fade-in и -out), который может быть ненужным, хотя.