Quantcast
Channel: FF スタッフ Blog »規友
Viewing all articles
Browse latest Browse all 2

スマホでは回転時の挙動が端末間で異なる

$
0
0
回転時の挙動の確認

スマートフォンサイト構築運用支援ソリューション「x-fit」の開発リーダー鈴木です。

今回はx-fitの開発中に発生した問題「回転時の挙動が端末間で異なる」について、詳細をまとめたいと思います。

まず、経緯からお話します。
Android2.2の時代までは「iPhoneで回転時の処理を書きたい場合は orientationchangeイベントをハンドリングし、Androidではresizeイベントを利用する」というのが主流でした。

x-fitでもそういった実装をとっていたのですが、開発機として購入したXperia arcで挙動を確認したところ、画面をスクロールさせないとresizeイベントが発生せず、しかもwindow.orientationの値が変わらないという現象が確認されました。

そこで、身近にあった主要な機種で回転周りの挙動を調査してみました。


回転調査結果表(2011/6/10現在)
クリックで拡大します。

 

端末とOSによる回転動作の違い

iPhoneではorientationchangeでは正しい動作をしますが、resizeは1度目の回転では動作せず、2度目以降でやっと動作します。そして、その時取れるwindow.orientationは逆の値を示すようです。

iPhoneは恐らく最初の回転では自動拡大を行うため、このような動作になっていると思われます。また、回転する前にresizeが発生しているのでしょう。

これに対してAndroidは、2.2からorientationchangeが動作するようです。
ただ、resizeに関しては、2.2までは正しいwindow.orientationが取れているにも関わらず、2.3になってスクロールさせて始めて正しい値が取れるようになるという仕様に変化したようです。

初めはresizeで回転が取れる仕様になっていた所に2.2からorientationchangeイベントを取れるようにして、さらに2.3からiPhoneと同様に回転前にresizeが発生するようになったようです。

総じて見ると、Androidの迷走ぶりが伺えます(笑)。
こちらとしては2.2が一番扱いやすい動きだったのですが、何か事情があったのでしょうね。

ただ、今後どうなるかは全くわかりません。x-fitチームはこういった機種・OS・バージョン依存からコンテンツ作成者を救うため、これからもこういった現象を追っていきます。

[注意事項]
これらの情報は独自調査のものです。
実際の利用に関しましては、各キャリアの公式資料も併せてご参照の上、ご自身の判断によりご利用ください。


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images