2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Display#getRotation() の罠

Last updated at Posted at 2017-10-27

Display#getRotation() は画面の向きによって、 0, 90, 180, 270度 の値が取得できますが、
画面の向き (角度) を取得するときに、端末によって0度の定義が異なっていることがわかりました。

ほとんどの端末では縦向きが0度ですが、
IMG_3357.JPG

一部の端末では横向きが0度になることがありました。
IMG_3356.JPG

getRotation の document を読んでみると、自然な向きを基準に画面の角度を返すとあります・・

Returns the rotation of the screen from its "natural" orientation. The returned value may be Surface.ROTATION_0 (no rotation), Surface.ROTATION_90, Surface.ROTATION_180, or Surface.ROTATION_270.

自然な向きって・・

解決策

今回、「自然な向き」を基準にした角度が返ってきては困る要件だったので、
getResources().getConfiguration().orientation
と一緒に向きと角度を判断するようにしました。

現象を確認した端末

現在この現象を確認できている端末は次のとおりです。

  • Xperia Z4 Tablet

それっぽいのに、現象を確認できなかった端末は次のとおりです。

  • Lenovo YT3-X90X (起動画面は横なのに・・)
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?