这是我的第一个问题,如果我没有提供所有必需的信息,那就很抱歉。只需评论,我就会添加它。
解决问题本身。我试图通过简短的视频制作各种各样的画面。我希望应用程序在视频结束后启动以下活动,但在我启动应用程序后,它立即启动第二个活动(代码中的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);
}
}
感谢您提出的任何建议,就像我说的,如果您需要有关此问题的更多信息,请告诉我。
答案 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秒,你可以在其中做动画部分