Исчезновение активности от предыдущей активности в Android - PullRequest
18 голосов
/ 05 февраля 2012

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

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

/**
 * Pause Activity
 */
@Override
protected void onPause()
{
    super.onPause();
    finish();
    overridePendingTransition(android.R.anim.fade_in, 0);
}

EDIT:

Создание моей собственной анимации fade_out для сохранения альфа-уровня 1,0 (от 1,0 до 1,0) идобавление android:fillAfter="true" к моему набору анимации заставки устранило проблему.

Ответы [ 2 ]

37 голосов
/ 05 февраля 2012

Речь идет о порядке вещей.Вот пример, который переходит в следующее действие через 3 секунды:

new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {

    //Create an intent that will start the main activity.
    Intent mainIntent = new Intent(SplashActivity.this, MainMenuActivity.class);
    SplashActivity.this.startActivity(mainIntent);

    //Finish splash activity so user cant go back to it.
    SplashActivity.this.finish();

    //Apply splash exit (fade out) and main entry (fade in) animation transitions.
    overridePendingTransition(R.anim.mainfadein, R.anim.splashfadeout);
  }
}, 3000);

Обратите внимание, что здесь появляются и исчезают две анимации.

mainfadein.xml

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

splashfadeout.xml

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android" 
        android:interpolator="@android:anim/decelerate_interpolator"
        android:zAdjustment="top" 
        android:fromAlpha="1.0" 
        android:toAlpha="0.0" 
        android:duration="700" />
30 голосов
/ 01 декабря 2015

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

my_splash_fade_out.xml

<?xml version="1.0" encoding="utf-8"?>

<alpha
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="750"
    android:fromAlpha="1.0"
    android:interpolator="@android:interpolator/accelerate_cubic"
    android:startOffset="250"
    android:toAlpha="0.0"
    android:zAdjustment="top" />

Я добавляю startOffset сюда, чтобы дать недавно созданной Деятельности немного вперед, так как она довольно тяжелая.

MySplashActivity.java

...
startActivity( ... );
finish();
overridePendingTransition( 0, R.anim.screen_splash_fade_out );

Предварительный просмотр

Preview animation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...