-1

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

  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 的设备

我想要什么

所以告诉我如何将设备分辨率与一组分辨率进行比较,并发送保持分辨率分类图像的分辨率。

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

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

4

1 回答 1

2

800 像素 * 1172 像素

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

我想发送更接近它的分辨率。

使用您支持的尺寸数组并找到与您传递的宽度/高度最接近的值的可能解决方案:

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
于 2016-01-19T07:52:13.597 回答