在我的应用程序中,我必须做一些特定于解决方案的工作,我必须得到解决方案并相应地将其发送到服务器。现在,我的服务器上的图像可以满足以下各种分辨率......
我正在以下列方式获得解决方案
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
所以我们知道有这样的分辨率,所以会有一些设备的分辨率与我上面提到的分辨率略有不同,例如我的设备有800px * 1172px
我想要
那么请告诉我如何将设备分辨率与设备分辨率进行比较 分辨率并发送保持分辨率的分辨率 分类图像。
如果设备具有我预先确定的分辨率中不存在的分辨率,那么我想将分辨率发送到更近的分辨率。
请帮助我,我不知道怎么做。
答案 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