SurfaceView里面的MediaPlayer只显示了10英寸平板电脑的平衡

时间:2014-10-17 11:00:22

标签: android media-player surfaceview tablet

正如您在下一个链接中看到的: https://www.dropbox.com/s/5qdu28byz0luxyu/Screenshot.png?dl=0

它只显示了SurfaceView的一部分。我已经定义了SurfaceView,例如next xml:

<RelativeLayout
    android:id="@+id/rel_page0"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true" >

<SurfaceView
    android:id="@+id/video0_0p"
    android:layout_width="fill_parent"
    android:layout_height="470dp"
    android:layout_alignParentTop="true"
    android:adjustViewBounds="true"/>
...

我的java代码是:

sv.getHolder().addCallback(new Callback() {

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        mediaPlayer.release();
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        mediaPlayer.setVolume(0, 0);
        playVideoDelay(mediaPlayer, sv, path);                  
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder,
        int format, int width, int height) {
    }
});

//The method called is:
private void playVideoDelay(final MediaPlayer videoView,
    final SurfaceView sv, Uri uri) {
    try {
        videoView.setDataSource(getActivity().getApplicationContext(), uri);
        sv.getHolder().setFormat(PixelFormat.OPAQUE);
        videoView.setDisplay(sv.getHolder());
        videoView.prepare();
        if (Build.VERSION.SDK_INT >= 16)
            videoView
                .setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
        if (currentPositionVid > 0) {
            videoView.seekTo(currentPositionVid);
        }
        videoView.start();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

它适用于我的旧平板电脑三星Galaxy 10.1,但在我的平板电脑bq爱迪生3中它运行不好(正如你在上一个链接中看到的那样)。

1 个答案:

答案 0 :(得分:1)

最后,通过阅读很多帖子,Android文档和其他内容;我明白,当你在Adroid中使用两个以上的图层时(每个图层可以由图像,按钮,视图,SurfaceView或其他高级图形组件组成我的情况),你必须小心,因为android渲染有时不会知道每一层的重量和一些元素的正确顺序。

所以在我的情况下,我试图在一个带背景的图层上显示一个SurfaceView(上面有一些按钮和图像),上面有一些图像按钮,等等。有时候这层很好,但有时不是。实际上这个问题在图层行为表单中很难解决,所以我通过将所有按钮和图像放在SurfaceView外部来重新构建所有接口。

https://www.dropbox.com/s/pb7hn32cx9y2eak/Screenshot_2015-01-12-14-21-29.png?dl=0

希望它有所帮助!此致