isLong = ((画面サイズの長い方*3)/5) >= (画面サイズの短い方-1))
例えば、800px×1280pxの端末の場合下記の判定式に置き換えられます。
(1280*3)/5 >= 800-1
結果、notlongな端末と判断されます。
※
ただし、実際にはデコレーション領域を除いたサイズが参照されます。
ナビゲーションバー領域のサイズが減算されてた値が使用されます。
Nexus7だと、ナビゲーションバーの位置が画面の向きに依存します。
port : 基本サイズ(x=800px, y=1280px), 参照サイズ(x=800px, y=1205px)
land : 基本サイズ(x=1280px, y=800px), 参照サイズ(x=1280px, y=736px)
該当するソースコードは下記です。
・com.android.server.wm.WindowManagerService.reduceConfigLayout()
// Is this a long screen? if (((longSize*3)/5) >= (shortSize-1)) { // Anything wider than WVGA (5:3) is considering to be long. screenLayoutLong = true; } else { screenLayoutLong = false; }
"long, notlongは画面アスペクト比に依存するもので、画面の向きには依存しない"とDevelopersSiteに記載があります。
http://developer.android.com/guide/topics/resources/providing-resources.html
This is based purely on the aspect ratio of the screen (a "long" screen is wider). This is not related to the screen orientation.でも、Nexus7のようなナビゲーションバーが画面の向きで変化する端末だと、
場合によってはこの前提が崩れてしまうのでは...
以上です。