2012-02-05 21 views
18

現在、Androidアプリで作業していますが、私のスプラッシュアクティビティに問題があります。私の主な活動は、黒い画面からではなく、私のスプラッシュ・アクティビティからフェードインしたいと思っています。私のスプラッシュと主なアクティビティの両方が同じ背景イメージを使用しているので、fade_in/fade_outコンボを実行すると、移行中にバックグラウンドの種類が少し消えてしまいます。Androidで以前のアクティビティからアクティビティをフェードインする

ここに私のロゴのバージョンが必要です:普通と輝いています。私の主な活動が消えて行きたいので、私の輝くロゴが私の普通のロゴを取ってきて、きちんとした小さな「ターンオン」効果を引き起こします。次のコードは、理想的ではない黒い画面からフェードインします。

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

EDIT:

(1.0〜1.0)1.0アルファレベルを維持するために私自身のfade_outアニメーションを作成し、問題を修正私のスプラッシュアニメーションセットにandroid:fillAfter="true"を追加します。

答えて

36

物事の順番です。 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); 

ここで、2つのアニメーションがフェードインしてフェードアウトすることに注意してください。

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

HRM ...これは、フェージングの前に黒い画面になっている私の現在のコードと同じ問題を抱えています私がfade_outを省略するか、それを残してしまえばちょっと変わったように見える。私は自分のfade_outを実装しようとした。これは1.0アルファから1.0アルファに変わるが、元のログo新しいものが退色する前にまだ移動していました。 ここでの目標は、スプラッシュアクティビティをメインアクティビティで「上書き」することです。他のビューが表示されるとロゴが輝き始めるように見えます。 – Karai17

+0

Aha!それを私が直した! – Karai17

+2

嬉しいことに、私は将来の訪問者のためにxmlも追加しました。したがって、spalshでフェードアウトすると、android:fillAfter = "true"に設定され、1.0から1.0にアルファが設定されると、いわゆるクロスフェード効果が得られます。知っておいてよかった! – Lumis

23

私は古典的なクロスフェードに対してお勧めではなく、アニメーションせずに、新たな活性を示し、ちょうど現在の活動をフェードアウトしたいです。これは、&の外観がはるかにクリーナーとアニメーションが開始されている間、背景からアプリを開いたときにランチャー/基礎となるアプリを見ることができるいくつかの小さな問題を解決します。

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

+0

これははるかに良いように、ありがとう!簡潔で簡潔な – George

+0

。 –

関連する問題