如何将分辨率与其他一些分辨率进行比较

How to compare the resolutions with some other resolutions

在我的应用程序中,我必须做一些特定于分辨率的工作,我必须获得分辨率并将其相应地发送到服务器。现在我的服务器有以下分辨率的图像...

  1. 320 * 480
  2. 480 * 800
  3. 800 * 1200
  4. 720 * 1280
  5. 1080 * 1920
  6. 1440 * 2560

我通过以下方式获得解决方案

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

所以我们知道有很多分辨率,所以会有一些设备的分辨率与我上面提到的一组分辨率略有不同,例如我有一个设备有 800px * 1172px

我想要什么

So tell me how can I compare the device resolution with the set of resolution and send the resolution which maintain the resolution categorized images.

另外,如果设备的分辨率在我预先确定的一组分辨率中不存在,那么我想发送更接近它的分辨率。

请帮帮我,我不知道该怎么做。

800px * 1172px

你知道这实际上是一个 800x1200 的显示器吗?获取屏幕尺寸的方式会考虑设备的 on-screen 导航栏。如果您需要考虑导航栏,请参阅 this 和类似问题。

I want to send the resolution closer to it.

可能的解决方案使用您支持的维度数组并找到最接近您传递的值 width/height:

final int[] supportedHeight = {320, 480, 720, 800, 1080, 1440};
final int[] supportedWidth = {480, 800, 1200, 1280, 1920, 2560};


public static int getClosest(int n, int[] values){
    int dst = Math.abs(values[0] - n);
    int position = 0;
    for(int i = 1; i < values.length; i++){
        int newDst = Math.abs(values[i] - n);
        if(newDst < dst){
            position = i;
            dst = newDst;
        }
    }
    return values[position];
}

 Log.d("h", getClosest(1337, supportedHeight)+""); //1440
 Log.d("w", getClosest(1172, supportedWidth)+"");  //1200