android - Android 中的启动画面 Alpha 动画

标签 android android-animation splash-screen thread-sleep

我想显示一个闪屏动画,其中图像淡入然后淡出。我希望在图像淡出后加载第二个 Activity 。

  1. 淡入时间(1000 毫秒)
  2. 等待(1000 毫秒)
  3. 淡出时间(1000 毫秒)
  4. 等待(1000 毫秒)
  5. 加载第二个 Activity

我该如何解决这个问题?我当前使用的代码是:

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

请帮忙。

最佳答案

您可以使用动画集来做到这一点。 Animation.setStartOffset() 方法允许指定动画何时开始(0 表示淡入,2000 表示淡出)。 3 秒后使用 Handler.postDelayed() 启动下一个 Activity。

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

关于android - Android 中的启动画面 Alpha 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11455455/

相关文章:

java - 为我的应用程序设置特定字体

android - 边距属性在自定义 DialogFragment 中不起作用

java - 如何在 Android 中运行 Google map 动画时禁用触摸检测

Android:如何使用文本创建启动画面

ios - 无法为通用应用程序设置启动图像

android - 如何制作类似Foursquare的 map 效果:

android - 如何在 android 中存储和检索共享首选项中的数组?

android - 我可以移动 android :duration of an animation-list item to attrs. xml 吗?

android - ImageView 宽度上的动画已更改

android - 淡出闪屏,淡入android中的webview