Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android如何确定屏幕分辨率?_Android_Surfaceholder - Fatal编程技术网

Android如何确定屏幕分辨率?

Android如何确定屏幕分辨率?,android,surfaceholder,Android,Surfaceholder,我有一个android设备,允许用户更改屏幕分辨率。例如,我有一个1080显示器,我把它的分辨率设置为720。我可以验证电视设置中的分辨率是否已更改。然而,Android似乎没有使用这些信息。相反,它检索并使用物理显示分辨率。所以它在1080中渲染所有内容,然后缩小到720。这是浪费资源 Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size)

我有一个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作为代码的输出。我的假设正确吗

我怎样才能改变这个

我知道,每个窗户都有一个表面,原则上我可以改变它的大小:

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

除了创建我自己的任意大小的曲面外,还有其他方法可以改变分辨率吗(它还能工作吗?

当您改变屏幕分辨率时,DisplayMetrics是否有差异?没有差异,输出是相同的。我做了以下操作:
DisplayMetrics=newdisplaymetrics();getWindowManager().getDefaultDisplay().getMetrics(度量);System.out.println(“度量:+metrics.widthPixels+“x”+metrics.heightPixels)