当前位置: 首页 > 知识库问答 >
问题:

当活动继续时,SurfaceView变为黑色

葛昕
2023-03-14
@Override
public void onCreate(Bundle savedInstanceState) {
    mSurfaceView = (SurfaceView) findViewById(R.id.surface);
    mSurfaceView.getHolder().addCallback(this);
    mSurfaceView.getHolder().setFixedSize(1080, 1920);
    mSurfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
    if (mp == null)
        mp = new MediaPlayer();

    Uri video = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.video);

    try {
        mp.setDataSource(this, video);
        mp.prepare();
    } catch (IOException e) {
        return;
    }

    mp.setLooping(true);

    //Get the SurfaceView layout parameters
    android.view.ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();

    lp.width = 1080;
    lp.height = 1920;

    //Commit the layout parameters
    mSurfaceView.setLayoutParams(lp);
    mp.setDisplay(mSurfaceView.getHolder());

    //Start video
    mp.start();
}

我研究了其他解决方案,但它们使用的是扩展SurfaceView并实现Runnable的自定义类。我希望使用默认的SurfaceView类。有什么办法可以解决这个问题吗?

共有1个答案

冉德元
2023-03-14
@Override
public void onPause() {
    super.onPause();
    mp.pause();
}
 类似资料:
  • 我已经为Android制作了一个TicTacToe游戏,为了开始一个新游戏,我调用让用户在新的Act 但问题来了:整个SurfaceView只是一个黑色区域,直到我点击某个地方,然后它就会像它应该的那样运行:方法被调用,游戏变得可见。 我有什么办法摆脱黑屏吗?我已经尝试在onResume()/onPause期间将LinearLayout和SurfaceView设置为可见/不可见。而或也不起作用。

  • 我有一个问题,恢复活动的通知点击。我有一个应用程序可以播放一首歌一段时间。这个想法是,当你播放一首歌,并按下Home键时,应该会有一个通知,让你返回到可以停止这首歌的应用程序。 以下是我发出通知的方式: 这是我的舱单:

  • 我对此进行了研究,发现有2+种方法:使用使用anim.xml文件,或者使用transition.xml文件的Transitions(来自android文档)... 我两个都试过,但都给了我不想要的结果: 对于动画:我得到了一个丑陋的中间过渡黑屏: style.xml 我的其他问题是我应该采用哪种方法?谷歌是否在启动新活动的动画上推动了过渡?

  • 好的,所以我的程序工作正常,但最后它会询问用户是否要输入另一组整数,如果他们键入“是”,则该过程重新开始。我的程序正在重新开始,但它保留所有相同的用户输入,因此它只是不断重复其原始输入的相同输出。 这是我的代码 我当前的输出如下所示: 输入整数列表(以0结尾):1 输入整数列表(以0结尾):2 输入整数列表(以 0 结尾):-1 输入整数列表(以0结尾):3 输入整数列表(以0结尾):0 阳性数量

  • 我是Android Studio的新手,我一直在寻找答案,但不幸的是,我无法做到。我在创建新时遇到问题 我的Android Studio和我之前观看的视频的对比: 我已经试过右键单击另一张照片上的确切内容,并在每个文件夹中的任何位置单击鼠标右键,但仍然找不到新的

  • 跳过当前循环的剩余部分并继续下一次循环。在各种循环中都是有效的。 Continue [, LoopLabel] [AHK_L 59+]:如果指定了,则 LoopLabel 表示此语句所应用的循环;通过标签名或嵌套层级的数值。如果省略或为 1,此语句应用于它所在的最内层循环。LoopLabel 必须为常量,不支持变量和表达式。如果指定标签,则它必须直接指向循环命令。 Continue 的行为如同直接