2

画像がフェード インしてからフェード アウトするスプラッシュ スクリーン アニメーションを表示したいと考えています。画像がフェードアウトした後に 2 番目のアクティビティをロードしたい。

  1. フェードイン時間 (1000 ミリ秒)
  2. 待機 (1000 ミリ秒)
  3. フェードアウト時間 (1000 ミリ秒)
  4. 待機 (1000 ミリ秒)
  5. 2 番目のアクティビティを読み込む

どうすればいいですか?私が現在使用しているコードは次のとおりです。

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.ImageView;
public class Splash extends Activity
{
    ImageView img;
    Thread timer;
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        img = (ImageView) findViewById (R.id.imgSplash);
        img.startAnimation(FadeIn(1000));
        try
        {
            Thread.sleep(1000);
        }
        catch (InterruptedException e1)
        {
            e1.printStackTrace();
        }

        img.startAnimation(FadeOut(1000));

        try
        {
            Thread.sleep(1000);
        }
        catch (InterruptedException e1)
        {
            e1.printStackTrace();
        }
        timer.start();
        Intent intent = new Intent();
        intent.setClass(Splash.this,MainScreen.class);
        startActivity(intent);
    }
    public void onPause()
    {
        super.onPause();
        finish();
    }
    private Animation FadeIn(int t)
    {
        Animation fade;
        fade = new AlphaAnimation(0.0f,1.0f);
        fade.setDuration(t);
        fade.setInterpolator(new AccelerateInterpolator());
        return fade;
    }
    private Animation FadeOut(int t)
    {
        Animation fade;
        fade = new AlphaAnimation(1.0f,0.0f);
        fade.setDuration(t);
        fade.setInterpolator(new AccelerateInterpolator());
        return fade;
    }
}

助けてください。

4

1 に答える 1

3

AnimationSet を使用してそれを行うことができます。このAnimation.setStartOffset()メソッドでは、アニメーションを開始するタイミングを指定できます (fadeIn の場合は 0、fadeOut の場合は 2000)。を使用して 3 秒後に次のアクティビティが起動されHandler.postDelayed()ます。

private final Handler handler = new Handler();

private final Runnable startActivityRunnable = new Runnable() {

    @Override
    public void run() {
        Intent intent = new Intent();
            intent.setClass(Splash.this,MainScreen.class);
        startActivity(intent);
    }
}; 

public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.splash);
    img = (ImageView) findViewById (R.id.imgSplash);

    setContentView(img);
}

@Override
protected void onResume() {
    super.onResume();

    AnimationSet set = new AnimationSet(true);

    Animation fadeIn = FadeIn(1000);
    fadeIn.setStartOffset(0);
    set.addAnimation(fadeIn);

    Animation fadeOut = FadeOut(1000);
    fadeOut.setStartOffset(2000);
    set.addAnimation(fadeOut);

    img.startAnimation(set);

    handler.postDelayed(startActivityRunnable, 3000);
}

public void onPause()
{
    super.onPause();
    handler.removeCallbacks(startActivityRunnable);
}
于 2012-07-12T16:14:00.890 に答える