有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android Studio设置活动启动延迟时出现问题

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

问题本身。我正试着制作一个由短视频组成的轰动尖叫。我希望应用程序在视频结束后启动以下活动,但在我启动应用程序后,它会立即启动第二个活动(代码中的Menu.class)。一旦我进入菜单活动,我可以返回,但我看到的是一个黑色的视频视图。此外,在我添加处理程序之前,VideoView已经工作了。不确定这是否可能是问题(安卓 studio的新功能),但即使删除@Override(可能是愚蠢的,对吧?)。也可能是菜单造成的。java活动?(这只是标准的预生成预设,我没有对其进行任何更改)

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 = "安卓.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);
}
}

谢谢你的建议,就像我说的,如果你需要更多关于这个问题的信息,请告诉我


共 (2) 个答案

  1. # 1 楼答案

    VideoView需要一些时间来热身,因此:

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

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

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

    你也可以使用线程。睡眠(毫秒);如果您正在向初始屏幕添加动画 全文如下:

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

    它提供了3秒的延迟,你可以在其中做动画部分