Android Studio- 设置 activity 启动延迟时遇到问题

Android Studio- Trouble with setting activity start delay

这是我的第一个问题,很抱歉,如果我没有提供所有需要的信息。只要评论,我会添加它。

回到问题本身。我正在尝试制作一个由短视频组成的启动画面。我希望应用程序在视频结束后启动以下 activity,但在我启动应用程序后,它会立即启动第二个 activity(代码中的 Menu.class)。进入菜单 activity 后,我可以返回,但我只看到黑色 VideoView。此外,VideoView 在我添加处理程序之前工作。不确定它是否可能是问题(android studio 的新手)但即使在删除 @Override 后也不起作用(可能是愚蠢的,对吧?)。还是Menu.javaactivity引起的? (这只是标准的预生成预设,我没有做任何改动)

public class splash_screen extends AppCompatActivity {
static long duration;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_ACTION_BAR);
    setContentView(R.layout.activity_splash_screen);

    VideoView videoView = this.findViewById(R.id.videoView);
    String path = "android.resource://" + getPackageName() + "/" + R.raw.splash;
    videoView.setVideoURI(Uri.parse(path));
    videoView.start();

    duration = videoView.getDuration();
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            startActivity(new Intent(splash_screen.this, Menu.class));
        }
    }, duration);
}
}

感谢您的任何建议,就像我说的,如果您需要有关该问题的更多信息,请告诉我。

VideoView需要一些时间预热,所以这里:

videoView.start();
duration = videoView.getDuration();

duration 可以为 0,这就是处理程序立即触发的原因。要切换到第二个 activity,您应该删除处理程序部分并使用:

videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
     @Override
     public void onCompletion(MediaPlayer mediaPlayer) {
           startActivity(new Intent(splash_screen.this, Menu.class));
           finish();//close activity
     }
});

你也可以使用Thread.sleep(毫秒);如果您要将动画添加到启动画面 完整代码:

 Thread t=new Thread(){
        @Override
        public void run() {
            try{
                sleep(3000);
            }
       catch (InterruptedException e){
          }
            finally {

                startActivity(i);
            }
        }
    };
    t.start();

它有3秒的延迟,你可以在里面做动画部分