2012-02-05 10 views
18

Şu anda bir Android uygulaması üzerinde çalışıyor ve splash aktivitesiyle ilgili bazı sorunlara sahibim. Ana etkinliğimin, siyah ekrandan değil, benim splash aktivitemden kaybolmasını istiyorum. Hem benim splash'ım hem de ana aktivitelerim aynı arka plan resmini kullanıyor, böylece bir fade_in/fade_out açılanını kullanırsam, geçiş sırasında arka planın biraz azalması garip görünüyor.Android'deki Önceki Etkinlikten Etkinliklerde Fade Faal

Buradaki fikir benim logomun versiyonlarına sahibim: normal ve parlak. Ana etkinliğimin kaybolmasını istiyorum, böylece parlayan logom, normal logomu düzgün bir "açılma" etkisine neden oluyor. Aşağıdaki kod, ideal olmayan siyah bir ekrandan kaybolur.

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

DÜZENLEME:

(1.0 ile 1.0) 1.0 alfa seviyesini korumak için kendi fade_out animasyon oluşturma ve sorunu giderdik benim sıçrama animasyon setine android:fillAfter="true" ekledi.

cevap

36

Bu, şeylerin sırası ile ilgilidir. Burada iki animasyonlar orada soluk al ve soluk

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

Not: Burada 3 saniye sonra bir sonraki aktivitenin içine kaybolur bir örnektir.

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 ... Bu solma önce siyah bir ekran gider hangi benim şimdiki koduyla aynı sorun var eğer fade_out'u çıkarırsam ya da eğer onu bırakırsam biraz hantallaşırsam, kendi fade_out'umu 1.0 alfadan 1.0 alfaya ama asıl kayıttan geçirmeyi denedim. Buradaki amaç, ana aktivite ile sıçrama etkinliğinin "üzerine yazılması", böylece diğer görünümler göründüğünde logonun parlamaya başlaması gibi görünüyor. – Karai17

+0

Aha! Onardım! – Karai17

+2

Duyduğuma sevindim, ayrıca gelecekteki ziyaretçiler için xml ekledim. Eğer spalsda kaybolursa android ayarlanır: fillAfter = "true" ve 1.0.to 1.0'dan alfa olarak adlandırılan çapraz-fade efektini alırız. Bilmek güzel! – Lumis

23

Ben klasik bir crossfade karşı tavsiye ziyade bir animasyon olmadan yeni Etkinliği göstermek ve sadece geçerli Aktivite kaybolup olur. Bu, &'un daha temiz olduğunu hisseder ve animasyon başlatılırken uygulamayı arka plandan açtığınızda başlatıcıyı/temeldeki uygulamayı görebileceğiniz bazı küçük sorunları giderir.

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

Ben oldukça ağır olduğu gibi burada startOffset, yeni oluşturulan Aktivitesi baş başlangıcı kapalı biraz vermek ekliyorum.

MySplashActivity.java

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

Önizleme

Preview animation

+0

Böyle daha iyi, teşekkürler! – George

+0

güzel ve özlü. –

İlgili konular