web-dev-qa-db-ja.com

Android画面のアスペクト比を数学的に計算する方法

Androidがアプリのクエリを可能にするデバイス画面のプロパティの1つは、アスペクト比です。私が見た例では、このプロパティには2つの値しかないようです-longおよびnotlong

Androidで使用されているロジックをリバースエンジニアリングして、デバイスを2つのアスペクト比のいずれかを持つものとして分類しようとしています。

いくつかの公式データを使用するために、Android StudioのAVDManagerツールに含まれているデバイス定義によって提供される値を参照し、それを自分の計算と組み合わせました。 Devices included in AVD Manager

「公開比率」の列には、AVDマネージャーから抽出された値が表示されます。これらの結果に基づいて、GalaxyS4とGalaxyNexusがnotlongと見なされる方法を理解できていません。 longと見なされます。

11
Ravi Gupta
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float ratio = ((float)metrics.heightPixels / (float)metrics.widthPixels
);
12
Avi

(16:9)で配給量を見つけるには、 [〜#〜] gcd [〜#〜] を見つけて、両方の数値をそれで割る必要があります。

int gcd(int p, int q) {
    if (q == 0) return p;
    else return gcd(q, p % q);
}

void ratio(int a, int b) {
   final int gcd = gcd(a,b);
   if(a > b) {
       showAnswer(a/gcd, b/gcd);
   } else {
       showAnswer(b/gcd, a/gcd);
   }
}

void showAnswer(int a, int b) {
   System.out.println(a + " " + b);
}

この後、ratio(1920,1080)を呼び出すだけです。

3
Patel Pinkal

私はこの答えに非常に遅れていると思いますが、それでも知りたい人にとっては、答えは次のとおりです。

if(screen_width > screen_height) 
{
    aspectRatio = screen_width / screen_height;
} 
else 
{
    aspectRatio = screen_height / screen_width;
}
0
Ashwani