Анимация при переключении активности в Android?

Я хочу анимацию при переключении с одного занятия на другое в Android. Анимация, к которой я стремлюсь - это анимация снизу вверх.

Как я могу это сделать?

Ответы

Ответ 1

Да, это возможно. проверить этот вопрос. Вы должны определить анимацию в папке с анимацией, чем вы можете переопределить текущую анимацию, используя

overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );

Ответ 2

Вы можете настроить анимацию, когда вы перейдете к другому действию, используя этот

overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

Также вы можете получить такую ​​же анимацию, если вы вернетесь от последнего действия к предыдущему действию, переопределив метод

@Override
    public void onBackPressed() {
        super.onBackPressed();
        overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);

    }

Ответ 3

Вы получаете боковую анимацию по существу бесплатно при переключении на другую деятельность. Будет ли это достаточно?

Ответ 4

Лучший способ сделать это - создать стиль, как показано ниже

<style name="SlideAnimation.Activity" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_from_top</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_to_bottom</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_from_bottom</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_to_top</item>
</style>

Если вы хотите реализовать это для всего приложения, используйте его в теме приложения, например, be

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorWhite</item>
    <item name="colorPrimaryDark">@color/colorWhite</item>
    <item name="colorAccent">@color/colorAppBlue</item>
    <item name="android:statusBarColor">@color/colorPrimaryDark</item>
    <item name="android:windowAnimationStyle">@style/SlideAnimation.Activity</item>
</style>

И объявить AppTheme в манифесте в теге приложения, как below-

<application
    android:name=".MyApp"
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme"
     >

А если вы хотите использовать для конкретного действия, примените тему к этому действию в манифесте.

Ответ 5

Вы можете переопределить функцию public boolean onOptionsItemSelected(MenuItem item) и использовать finish(), а затем overridePendingTransition().
Например, добавьте следующий код в свою деятельность:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
  switch (item.getItemId()) {
    case android.R.id.home: // navigation up.
      finish();
      overridePendingTransition(R.anim.ENTER_ANIMATION, R.anim.EXIT_ANIMATION);
      return true;
    case ....: // implementation of other menu items.
  }
  return super.onOptionsItemSelected(item);
}

Другой способ - перезаписать функцию public boolean onNavigateUp(). Но onNavigateUp() предназначен только для уровня API 16 и выше.