152

HTCG1でAndroidVNCビューアを使用しています。しかし、何らかの理由で、G1がポートレートモードであるにもかかわらず、そのアプリケーションは常にランドスケープモードになっています。Android VNCビューアはオープンソースであるため、アクティビティを「ランドスケープ」にハードコーディングする方法を教えてください。電話の向きを尊重するように変更したいと思います。

4

16 に答える 16

195

AndroidManifest.xml ( link ) の 9 行目:

<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">

この行ではscreenOrientationを横向きに指定していますが、著者はさらに進んで、画面の向きの変更を で上書きしていますconfigChanges="orientation|keyboardHidden"。これは、VncCanvasActivity.java 内のオーバーライドされた関数を指しています。

VncCanvasActivity を見ると、109 行目にオーバーライドされた関数があります。

@Override
public void onConfigurationChanged(Configuration newConfig) {
  // ignore orientation/keyboard change
  super.onConfigurationChanged(newConfig);
}

著者は、キーボードや向きの変更を無視するようにコメントを付けました。


これを変更したい場合は、上記の AndroidManifest.xml ファイルに戻り、行を次のように変更します。

<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">

これにより、ユーザーがデバイスを回転させたときにプログラムが縦向きから横向きに切り替わるように変更されます。

これは機能する可能性がありますが、レイアウトの作成方法によっては、GUI の外観が台無しになる可能性があります。あなたはそれを説明する必要があります。また、アクティビティのコーディング方法によっては、画面の向きが変更されると、入力ボックスに入力された値が消えることに気付く場合があります。これも処理が必要な場合があります。

于 2010-01-27T21:55:34.723 に答える
121

Java コードでも同じデータを設定できます。

myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

ActivityInfo の他の値を使用すると、センサー駆動またはロックされたポートレートに戻すことができます。個人的には、この質問に対する別の回答で提案されているように、マニフェストで何かに設定し、後で必要に応じて Android SDK で上記の呼び出しを使用して変更するのが好きです。

于 2010-01-27T21:47:18.597 に答える
43

私のOnCreate(Bundle)では、通常、次のことを行います。

this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
于 2012-04-22T17:30:08.080 に答える
33

マニフェストでアクティビティの向きを指定できます。ここを参照してください。

<activity android:allowTaskReparenting=["true" | "false"]
...
          android:screenOrientation=["unspecified" | "user" | "behind" |
                                     "landscape" | "portrait" |
                                     "sensor" | "nosensor"]
...
                                       "adjustResize", "adjustPan"] >  
于 2010-01-27T21:24:21.453 に答える
11

以下は、ランドスケープ モードですべてのアクティビティを表示するために使用したコードです。

<activity android:screenOrientation="landscape"
          android:configChanges="orientation|keyboardHidden"
          android:name="abcActivty"/>
于 2011-10-11T05:28:41.940 に答える
9

迅速かつ簡単な解決策は AndroidManifest.xml ファイルです。強制的にランドスケープ モードにするアクティビティごとに次のコードを追加します。

android:screenOrientation="landscape"
于 2015-03-16T19:45:41.493 に答える
5

これは Xamarin.Android で機能します。OnCreate() で

RequestedOrientation = Android.Content.PM.ScreenOrientation.Landscape;
于 2016-08-23T23:18:00.723 に答える
4

それでおしまい!!この修正を長い間待っています。

(プログラムによって) ランドスケープ モードを必要とするアクティビティの二重開始に関する古い Android の問題があります。setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)

Android が起動時にランドスケープ モードになるようになりました。

于 2012-09-12T10:22:17.307 に答える
3

Arslan、マニフェストには既に方法があるのに、なぜプログラムでオリエンテーションを強制したいのですか <activity android:name=".youractivityName" android:screenOrientation="portrait" />

于 2011-01-24T21:46:00.460 に答える
-26

を押しCTRL+F11て画面を回転させます。

于 2012-10-18T12:26:59.703 に答える