java - 如何设置surfaceview自动显示大小?

标签 java android

我得到了这个表面 View

<SurfaceViewandroid:id="@+id/videoview"android:layout_width="720px"android:layout_height="480px"/>

我如何管理自动设置尺寸以显示尺寸? 因为每部 Android 手机都有不同的显示尺寸?

谢谢!

最佳答案

你必须在 onSurfaceCreated() 中捕获它并尝试在那里调整它的大小......

  private class surfaceCallback implements SurfaceHolder.Callback
{
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
    {
        if (holder == videoHolder)
        {
            Log.e(TAG, "video surfaceChanged: f: " + format + ", w: " + width + ", h: " + height);

            //resize it here maybe?
        } else
        {
            Log.e(TAG, "Unknown surface: f: " + format + ", w: " + width + ", h: " + height);
            assert (false);
        }
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder)
    {
        Log.e(TAG, "surfaceCreated");
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder)
    {
        Log.e(TAG, "surfaceDestroyed");
    }
}

获取显示尺寸的一种可能方法...

    //measured android resolution
    WindowManager win = (WindowManager) getApplicationContext().getSystemService(WINDOW_SERVICE);
    Display d = win.getDefaultDisplay();
    Point measuredResolution = new Point();
    d.getSize(measuredResolution); //measuredResolution now holds actual size.

关于java - 如何设置surfaceview自动显示大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11718850/

相关文章:

Android shell 使用应用权限

android - Firebase Analytics 事件中的 Bundle 内容未显示在仪表板中

java - new View.OnClickListener 类型必须实现继承的抽象方法

java - 如何检查用户输入而不退出错误

java - 当构造函数调用私有(private)方法并返回异常时,如何初始化实例进行测试

java - SwingWorker 的 ExecutorService 参数

java - Xtext- doGenerate 在作为 warfile 运行时返回 xtend 符号

java - 我在 Eclipse 中运行我的动态 Web 项目。我收到这个错误,为什么我不知道

Android - 处理图像/相机 - 几个问题

Android 如何在 PowerUp 上调试?