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"
к моему набору анимации всплеска, исправлена проблема.
Ответы
Ответ 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 );
Предварительный просмотр
![Предварительный просмотр анимации]()