Ответ 1
Да, это возможно. проверить этот вопрос. Вы должны определить анимацию в папке с анимацией, чем вы можете переопределить текущую анимацию, используя
overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );
Я хочу анимацию при переключении с одного занятия на другое в Android. Анимация, к которой я стремлюсь - это анимация снизу вверх.
Как я могу это сделать?
Да, это возможно. проверить этот вопрос. Вы должны определить анимацию в папке с анимацией, чем вы можете переопределить текущую анимацию, используя
overridePendingTransition( R.anim.slide_in_up, R.anim.slide_out_up );
Вы можете настроить анимацию, когда вы перейдете к другому действию, используя этот
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);
}
Вы получаете боковую анимацию по существу бесплатно при переключении на другую деятельность. Будет ли это достаточно?
Лучший способ сделать это - создать стиль, как показано ниже
<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"
>
А если вы хотите использовать для конкретного действия, примените тему к этому действию в манифесте.
Вы можете переопределить функцию 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 и выше.