-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

800px * 1172px

これが実際には 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 に答える