0

アクティビティをランドスケープ モードにロックし、その上にあるアクティビティに向きの変更を受け取って使用させようとしています。上部のアクティビティは部分的に透明であるため、下部のアクティビティをロックして正しく表示することが重要です。setRequestedOrientation()withおよび with でプログラムで設定しようとしAndroidManifest.xmlましたandroid:screenOrientation="landscape"

マニフェストを使用して向きをロックすると、上部のアクティビティもロックされます。上部のアクティビティを追加するとandroid:configChanges="orientation|screenSize|keyboardHidden"向きが変わりますが、下部のアクティビティも変わります。向きが変わった後、下のアクティビティが完全に空白 (透明) になることがあります。

これは私の中にありますAndroidManifest.xml

<application
    android:debuggable="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:theme="@style/AppTheme"
        android:screenOrientation="landscape"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".TopActivity"
        android:screenOrientation="sensor"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:theme="@style/Theme.Transparent">
    </activity>
</application>

MainActivity一番下のアクティビティです。単一のアクティビティが設定した方法でロックされるように、向きの変更を適切に処理するにはどうすればよいですか?

4

2 に答える 2

3

次のように、マニフェストファイルの方向の変更時に回転させたくないアクティビティにscreenOrientationを追加するだけです。

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

他のすべてのアクティビティは、向きが変わると自動的に回転します。他のアクティビティにscreenOrientationを指定する必要はありません。

于 2012-09-11T09:21:44.990 に答える
0

1)向きを無効にするには(つまり、ユーザーが電話をひっくり返したときにAndroidがアクティビティを再開しないようにするため)、AndroidManifestで「configChanges」を指定し(明らかにすでに行っているように)、単に応答しません変更:

<activity android:name="MainActivity" android:configChanges="keyboardHidden|orientation|screenSize">

2) または、アプリを強制的に「横向き」モードにしたいとします。「configChanges」の代わりに「screenOrientation」を指定できます

<activity android:screenOrientation="landscape" ... >

3) 最後に、方向の変更を処理したい場合は、a) 状態を保存し、b) 必要な処理を行う必要があります (おそらく、他のアクティビティに通知することを含む):

于 2012-09-10T22:03:22.283 に答える