Androidがアプリのクエリを可能にするデバイス画面のプロパティの1つは、アスペクト比です。私が見た例では、このプロパティには2つの値しかないようです-longおよびnotlong。
Androidで使用されているロジックをリバースエンジニアリングして、デバイスを2つのアスペクト比のいずれかを持つものとして分類しようとしています。
いくつかの公式データを使用するために、Android StudioのAVDManagerツールに含まれているデバイス定義によって提供される値を参照し、それを自分の計算と組み合わせました。
「公開比率」の列には、AVDマネージャーから抽出された値が表示されます。これらの結果に基づいて、GalaxyS4とGalaxyNexusがnotlongと見なされる方法を理解できていません。 longと見なされます。
DisplayMetrics metrics = context.getResources().getDisplayMetrics();
float ratio = ((float)metrics.heightPixels / (float)metrics.widthPixels
);
(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)を呼び出すだけです。
私はこの答えに非常に遅れていると思いますが、それでも知りたい人にとっては、答えは次のとおりです。
if(screen_width > screen_height)
{
aspectRatio = screen_width / screen_height;
}
else
{
aspectRatio = screen_height / screen_width;
}