2012-02-05 15 views
18

Obecnie pracuję nad aplikacją na Androida i mam pewne problemy z moją aktywnością powitalną. Chcę, aby moja główna aktywność znikała z mojej aktywności powitalnej, a nie z czarnego ekranu. Zarówno moje działanie powitalne, jak i główne używają tego samego obrazu tła, więc jeśli wykonuję komendę fade_in/fade_out, wygląda dziwnie, ponieważ rodzaj tła zanika nieco podczas przejścia.Zanikanie aktywności z poprzedniej aktywności w Androidzie

Idea jest taka, że ​​mam do wersji mojego logo: normalne i świecące. Chcę, aby moja główna działalność przygasała, więc moje świecące logo na wierzchu zabiera moje normalne logo, powodując efekt "włączania". Poniższy kod znika z czarnego ekranu, który nie jest idealny.

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

EDIT:

Tworzenie własną animację fade_out do utrzymania poziomu 1,0 alfa (od 1,0 do 1,0) i dodanie android:fillAfter="true" do Naprawiono problem mojego zestawu animacji powitalny.

Odpowiedz

36

Chodzi o porządek rzeczy. Oto przykład, który zanika do następnej aktywności po 3 sekundach:

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

Zauważ, że tutaj istnieje A Dwie animacje fade in i fade out.

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" /> 
+0

Hmm ... To ma ten sam problem jak mój aktualny kod, w którym idzie do czarnego ekranu przed blaknięcie w przypadku gdy pominę fade_out lub będzie wyglądał na nieco niewesoły, jeśli go zostawię. Próbowałem implementować własne przejście fade_out, które przechodzi z 1.0 alfa do 1.0 alfa, ale oryginalny dziennik o był nadal przemieszczony, zanim nowe zniknęło. Celem jest "nadpisanie" działania powitalnego główną działalnością, więc wygląda na to, że logo zaczyna świecić, gdy pojawiają się inne widoki. – Karai17

+0

Aha! Naprawiłem to! – Karai17

+2

Cieszę się, że mogę to usłyszeć, dodałem również xml dla przyszłych odwiedzających. Jeśli więc w fazie zanikania ustawimy android: fillAfter = "true" i alpha od 1.0.do 1.0 otrzymamy tzw. Efekt cross-fade. Dobrze wiedzieć! – Lumis

23

polecam przeciwko klasycznym przenikania, ale raczej pokazują nowej działalności bez animacji i po prostu znikną z bieżącej działalności. Wygląda na to, że & jest znacznie czystszy i rozwiązuje drobne problemy, w których można zobaczyć aplikację uruchamiającą/znajdującą się pod nią aplikację po uruchomieniu aplikacji z tła podczas uruchamiania animacji.

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" /> 

Dodaję startOffset tutaj dać nowoutworzonej aktywność nieco poza fory, ponieważ jest dość ciężki.

MySplashActivity.java

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

Podgląd

Preview animation

+0

To o wiele lepsze, dziękuję! – George

+0

ładne i zwięzłe. –

Powiązane problemy