Подтвердить что ты не робот

Fade in Activity от предыдущей активности в Android

В настоящее время я работаю над 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" к моему набору анимации всплеска, исправлена ​​проблема.

4b9b3361

Ответ 1

Речь идет о порядке вещей. Вот пример, который исчезает в следующем действии через 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" />

Ответ 2

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

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 );

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

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