Androidアプリの向きを携帯電話の縦向きとタブレットの横向きにロックする方法は?


83

ユーザーがデバイスを回転させたときに向きを横向きに変更したくないAndroidアプリを開発しています。また、ロックされた向きを携帯電話では縦向きモード、タブレットでは横向きモードにします。はいの場合、これはどのように達成できますか?ありがとう。


2
@CommonsWare:私のアプリには長いリストのメニューがあり、電話のポートレートモードではるかに効率的にトラバースされます。
Ankit Rawat 2013

3
次に、ユーザーがデバイスを任意の方向で使用できることを尊重する、より優れたGUIデザインを考え出します。
CommonsWare 2013年

回答:


157

ファイルのアクティビティ要素内で以下のプロパティを定義する必要がありAndroidManifest.xmlます。それはあなたの向きを縦向きに制限します。

android:screenOrientation = "portrait"

例:

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

これをアプリ全体に適用する場合は、次のようにアプリケーションタグ内で以下のプロパティを定義します。

        <application>
         android:screenOrientation="sensorPortrait"
        </application>

さらに、以下のEduard Lucaのコメントに従ってscreenOrientation="sensorPortrait"、180度の回転を有効にする場合にも使用できます。


21
またはsensorPortrait、ユーザーが画面を180度回転できるようにしたい場合:)
Eduard Luca

44

android:screenOrientation="portrait"ディレクティブを追加する必要がありますAndroidManifest.xml。これは<activity>タグで行う必要があります。

さらに、Androidデベロッパーガイドには次のように記載されています。

[...]また、アプリケーションで要素を使用して縦向きまたは横向きのいずれかが必要であることを明示的に宣言する必要があります。たとえば、<uses-feature android:name="android.hardware.screen.portrait" />


6
グッドプラクティスの見積もりは+1で、これは正しく、最初に投稿されたため、受け入れられた回答であるはずです...
Eduard Luca

7
グローバルな方法はありますか?
Tyler Pfaff 2015

21

私はあなたがあなたの問題を完全に解決しない答えを受け入れたのを見ることができます:

android:screenOrientation="portrait" 

これにより、スマートフォンとタブレットの両方でアプリが強制的に縦向きになります。

を使用して、アプリをデバイスの「優先」方向に強制することができます

android:screenOrientation="nosensor"

これにより、ほとんどの携帯電話ではアプリが縦向きになり、タブレットでは横向きになります。ランドスケープモード用に設計されたキーパッド付きの電話はたくさんあります。アプリを強制的に縦向きにすると、そのようなデバイスではほとんど使用できなくなる可能性があります。Androidは最近、他のタイプのデバイスにも移行しています。デバイスに優先方向を選択させるのが最善です。


設定についての好奇心、それらについては「nosensor」あなたは、公式ドキュメントで続きを読むことができますdeveloper.android.com/guide/topics/manifest/activity-element
ジェームズ・ジョーダン・テイラー

11

それはそうかもしれません..あなたはそれがプログラムによってタブレットまたは電話であることを識別する必要があります...最初のチェックデバイスは電話またはタブレットです

デバイスがスマートフォンかタブレットかを判断しますか?

タブレットまたは電話-Android

じゃあ……

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

こんにちは@ Bhavesh、Android9モバイルでは機能しません。
マニカンダンK19年

それはタブレットがある場合にどのように我々はあなたがそれを説明していませんでした...識別することができます...
アブドゥル・ワヒド

編集した回答を見ることができます。デバイスがスマートフォンかタブレットかを判断する方法を含めましたか?
BhaveshHirpara20年

3
<activity android:name=".yourActivity"
          android:screenOrientation="portrait" ... />

メインアクティビティに追加して追加

android:configChanges="keyboardHidden"

キーボードが呼び出されたときにプログラムがモードを変更しないようにするため。




0

アクティビティタグの下のマニフェストファイルで、画面の向きを縦向きに設定します。

ここに例があります

すべてのアクティビティに入力する必要があります

アクティビティに次の行を追加します

ポートレート用

android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"

景観用

android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"

ここにMainActivityの例

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="org.thcb.app">
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity"
            android:screenOrientation="portrait"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

<activity android:name=".MainActivity2"
            android:screenOrientation="landscape"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


-1

追加するだけです:

android:screenOrientation="portrait"

AndroidManifest.xml」内:

<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.