Android如何确定屏幕分辨率?

时间:2015-11-23 07:38:11

标签: android surfaceholder

我有一个允许用户更改屏幕分辨率的android设备。例如,我有一个1080显示器,我将其分辨率设置为720.我可以验证电视设置中的分辨率是否发生了变化。但是,似乎Android不使用此信息。相反,它检索物理显示分辨率并使用它。所以它以1080为单位呈现所有内容,然后缩小到720.这是浪费资源。

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

即使电视告诉我屏幕分辨率是720,我仍然得到1080作为代码的输出。我的假设是对的吗?

我该如何更改?

我知道,每个Window都有一个Surface支持,原则上我可以改变它的大小:

getWindow().takeSurface(new SurfaceHolder.Callback2() {
            @Override
            public void surfaceRedrawNeeded(SurfaceHolder holder) {

            }

            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                holder.setFixedSize(200, 100);
            }

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

            }

            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {

            }
        });

但是我得到了

java.lang.UnsupportedOperationException: Currently only support sizing from layout

除了使用任意大小创建自己的Surface之外,还有其他方法可以更改分辨率吗?它会起作用吗?)

0 个答案:

没有答案