【发布时间】:2018-05-04 18:58:59
【问题描述】:
因为我希望能够传递播放视频的 MediaPlayer,所以我想在播放视频的片段中使用 SurfaceView 而不是 VideoView。
我查看了关于如何将 MediaPlayer 附加到 SurfaceView 的 earlier question。问题的答案告诉我创建两个函数:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
getWindow().setFormat(PixelFormat.UNKNOWN);
mPreview = (SurfaceView)findViewById(R.id.surfaceView);
holder = mPreview.getHolder();
holder.setFixedSize(800, 480);
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mp = new MediaPlayer();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
mp.setDisplay(holder);
play();
}
不幸的是,我无法通过 Fragment 覆盖 surfaceCreated,因为 Fragment 没有该方法。我还能将 MediaPlayer 附加到 Fragment 中的 SurfaceView 吗?
【问题讨论】:
-
您链接的示例中的
Activity具有surfaceCreated()方法,因为它是implements SurfaceHolder.Callback。你可以对你的Fragment类做同样的事情。 -
按照@MikeM. 的建议,让您的
Fragment实现SurfaceHolder.Callback。
标签: android android-fragments android-mediaplayer android-video-player