首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MediaPlayer in SurfaceView只显示了平板电脑bq 10英寸的一点平静。

MediaPlayer in SurfaceView只显示了平板电脑bq 10英寸的一点平静。
EN

Stack Overflow用户
提问于 2014-10-17 11:00:21
回答 1查看 538关注 0票数 0

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

它只显示了我的SurfaceView的一部分。我定义了SurfaceView,就像下一个xml一样:

代码语言:javascript
复制
<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代码是:

代码语言:javascript
复制
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();
    }
}

它工作在我的旧平板电脑三星Galaxy10.1,但在我的平板电脑bq爱迪生3,它的工作不好(如你在前面的链接)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-12 13:12:40

最后,通过阅读大量的帖子、Android文档和其他内容;我了解到,当您在Adroid中使用两个以上的层(每个层可以由图像、按钮、视图、SurfaceView或其他高级图形组件组成)时,您必须小心,因为android有时不知道每个层的权重,也不知道某些元素的正确顺序。

因此,在我的例子中,我试图在一个有背景的层上显示一个SurfaceView (上面有一些按钮和图像),在它们上面显示一些图像按钮,等等。有时图层画得很好,但有时没有。实际上,这个问题在图层行为形式中是很难解决的,所以我重新构建了所有的界面,把所有的按钮和图像放在SurfaceView之外。

2015-01-12-14-21-29.png?dl=0

希望能帮上忙!问候

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26423569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档