基本上,当我在webview中显示.gif时,我正在设置VideoView来播放音乐(比MediaPlayer更多的功能)。我不确定我是否需要多个线程或其他东西,但每当我尝试同时运行它时它会崩溃,或者不播放音乐。是不是因为我的“内容视图”设置为WebView,我无法访问main.xml上的对象(如视频视图)?
代码: 的setContentView(R.layout.main);
musicPlayer = (VideoView)findViewById(R.id.player);
//run gif
view = new GifWebView(this, "file:///android_res/raw/kk.gif");
setContentView(view);
//start player
musicPlayer.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + musicList[0]));
musicCounter =0;
musicPlayer.setOnCompletionListener(TrackRepeater);
musicPlayer.requestFocus();
musicPlayer.start();
如果我没有明确地改变WebView的上下文,那么播放器就可以工作,不知道该怎么做。欢呼声。
答案 0 :(得分:1)
请详细说明您使用VideoView播放音乐的原因。
比MediaPlayer更多的功能
VideoView本质上是SurfaceView和MediaPlayer的包装器。 VideoView中的额外功能应该只是与您不使用的屏幕上播放视频相关的内容。你有什么具体的理由在MediaPlayer上使用它?
但我认为你是正确的,通过改变你的活动内容,你打破了VideoView。您需要找到一种方法来执行此操作,而无需多次调用setContentView()。这里有很多可能性是两个:
获取对main.xml布局的父视图的引用,并在其上调用.addView()以添加GifWebView,而不是使用它调用setContentView()。
将GifWebView的声明添加到xml布局中,并以与VideoView相同的方式获取对它的引用。