Android Studio-设置活动启动延迟

时间:2017-11-24 21:52:08

标签: java android android-videoview android-handler

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

解决问题本身。我试图通过简短的视频制作各种各样的画面。我希望应用程序在视频结束后启动以下活动,但在我启动应用程序后,它立即启动第二个活动(代码中的Menu.class)。一旦我进入菜单活动,我可以回去,但我看到的只是一个黑色的VideoView。此外,VideoView在我添加Handler之前工作。不确定它是否可能是问题(Android工作室的新功能),但即使在删除@Override后也无法工作(可能是愚蠢,对吧?)。或者它可能是由Menu.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 = "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);
}
}

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你也可以使用Thread.sleep(毫秒);如果要在启动画面中添加动画 Full C O D E:

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

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

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