web-dev-qa-db-ja.com

モバイルデバイスのデフォルトの向きはハードウェアまたはソフトウェア固有ですか?

あるモバイルアプリケーションを別のモバイルアプリケーションに切り替えると、ユーザーインターフェイスの向きが変わって、画面が正しい方向を向くように画面を180度回転させる必要があることに気付きました。ソフトウェアまたはハードウェアが、ユーザーがデバイスを持っている方向、または少なくとも最新のアプリケーションが設定されている方向を認識している場合は、方向を変更しないと思います。

これにより、ハードウェアで構成されているデバイスのデフォルトの向きが実際にあるのか、ソフトウェアの構成もあるのか(そして、意図せずに衝突するように構成されているのではないか)と疑問に思います。

モバイルデバイスの横向きビューにデフォルトの向きはありますか?もしそうなら、それらはハードウェアおよび/またはソフトウェア構成に存在しますか?

3
Michael Lai

ハードウェアレベルでは、方向セットはありません。これらはファームウェアで定義されています。 PC用のモニターを例にとると、モニターの設定から向きを変更できます。

携帯電話の場合、デフォルトの向きはオペレーティングシステムによって定義され、アプリの場合は加速度計を使用して位置を検出し、それに応じて向きを変更します。

質問に答えるために、アプリで設定できる4種類の横向きがあります。 SCREEN_ORIENTATION LANDSCAPE PORTRAIT _REVERSE_PORTRAIT _REVERSE_LANDSCAPE

アプリから別のアプリに切り替えるとき、ハードウェアはシステム情報を読み取っており、方向を検出する加速度計を読み取っています。バグのある方法で、横向きの制限があるアプリを回転させ、アプリの設定を読み取ってビューを修正するまで、1〜2秒変形したように見せます。

1

AppleもGoogleも、デバイスの特定の向きをデフォルトとして使用することを推奨していません。

素材デザイン 画面のサイズと向きに合わせてレイアウトを調整するガイドのみ。

iOSヒューマンインターフェイスガイドライン のコメント:

アプリを単一の方向で実行することが不可欠である場合は、両方のバリアントをサポートしてください。ランドスケープモードでのみ実行されるアプリは、ユーザーがデバイスを左または右に回転します。縦向きモードでのみ実行されるアプリは、ユーザーがデバイスを180度回転させると、コンテンツを180度回転させる必要があります。ただし、iPhone Xの場合、縦向きモードの逆さをサポートしていません。誰かが間違った方向にデバイスを持っているときにアプリが自動的に回転しない場合、彼らは本能的にそれを回転することを知っています。彼らに言う必要はありません。

回転に応じてアプリの応答を状況に応じてカスタマイズします。たとえば、デバイスを回転させてキャラクターを動かすゲームです。たとえば、おそらく方向を切り替えるべきではありませんゲームプレイ中。ただし、現在の向きに基づいてメニューやイントロシーケンスを表示することはできます。

さらに技術的な深さ:

IOSとAndroidは、自動回転オプションがオンの場合、加速度計の読み取り値を使用して現在の方向を定義します。自動回転がオフの場合、代わりにユーザー回転が使用されます。

Androidでは、アプリのユーザーローテーションは SER_ROTATION 変数で設定できます。 可能な値 は次のとおりです。

USER_ROTATION: actual rotation, clockwise, 0 0°, 1 90°, 2 180°, 3 270°

より好ましい横向きの回転は1で、時計回りに90度であることを意味します。

iOSの場合Swiftのドキュメント から(SwiftはiOSのプログラミング言語です)ユーザーのローテーション値はUIDeviceOrientationにリストされています。

case landscapeLeft
The device is in landscape mode, with the device held upright and the home button on the right side.

case landscapeRight
The device is in landscape mode, with the device held upright and the home button on the left side.

より一般的な向きはlandscapeLeftです。これは、値が低い(3vs4)ためです。

2
Pavlo Grubyi

これは、開発者がアクティビティの動作をどのように選択したかに基づいています。 manifest.xmlファイルで、アプリを縦向きまたは横向きに強制するか、どれも強制しないようにすることができます。これはセンサーです。強制的に横向き(時計回りまたは反時計回り)に適用するコードは見つかりませんでした。どのような景観が活動に適用されるかは、ユーザー設定であることが理にかなっています。発生している問題について...アクティビティライフサイクルが正しく動作する場合は問題が解決され、横向きの場合はセンサーの決定になると思います。

1