我使用SurfaceView作为MediaPlayer的显示器,但视频是侧面的,我需要旋转它。我尝试使用SurfaceView.setRotation(90)
,但这给了我一个黑色的视图。
如果我将旋转设置为低于90度的任何度数,则视频会向右转换(在ViewPage中的另一页内容后面推送)相对数量。
以下是我用于创建视图和播放视频的代码:
final SurfaceView surface = new SurfaceView(getActivity());
surface.setRotation(90);
surface.getHolder().addCallback(new SurfaceHolder.Callback(){
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {}
@Override
public void surfaceCreated(SurfaceHolder holder) {
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mPlayer = new MediaPlayer();
mPlayer.setDisplay(surface);
try {
mPlayer.setDataSource(url);
mPlayer.setLooping(true);
mPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
} catch (IOException e) {
e.printStackTrace();
}
mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
mPlayer.prepareAsync();
mPlayer.setScreenOnWhilePlaying(true);
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
mPlayer.stop();
mPlayer.release();
}
});
如上所述,我将表面添加到ViewPage。视频播放,除旋转外,其他一切都有效。
我尝试了mPlayer.setSurface(holder.getSurface())
同样的结果。
我尝试使用TextureView但成效有限。它旋转,但我无法缩放它并保持纵横比与裁剪。
尝试锁定画布并旋转支架的画布,但无论在何种程度上,我所拥有的只是一个黑色视图。