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

时间:2016-01-19 07:18:13

标签: android android-resolution

在我的应用程序中,我必须做一些特定于解决方案的工作,我必须得到解决方案并相应地将其发送到服务器。现在,我的服务器上的图像可以满足以下各种分辨率......

  1. 320 * 480
  2. 480 * 800
  3. 800 * 1200
  4. 720 * 1280
  5. 1080 * 1920
  6. 1440 * 2560
  7. 我正在以下列方式获得解决方案

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

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

    我想要

      

    那么请告诉我如何将设备分辨率与设备分辨率进行比较   分辨率并发送保持分辨率的分辨率   分类图像。

    如果设备具有我预先确定的分辨率中不存在的分辨率,那么我想将分辨率发送到更近的分辨率。

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

1 个答案:

答案 0 :(得分:2)

  

800px * 1172px

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

  

我想把分辨率更接近它。

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

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