HTCG1でAndroidVNCビューアを使用しています。しかし、何らかの理由で、G1がポートレートモードであるにもかかわらず、そのアプリケーションは常にランドスケープモードになっています。Android VNCビューアはオープンソースであるため、アクティビティを「ランドスケープ」にハードコーディングする方法を教えてください。電話の向きを尊重するように変更したいと思います。
16 に答える
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 の外観が台無しになる可能性があります。あなたはそれを説明する必要があります。また、アクティビティのコーディング方法によっては、画面の向きが変更されると、入力ボックスに入力された値が消えることに気付く場合があります。これも処理が必要な場合があります。
Java コードでも同じデータを設定できます。
myActivity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo の他の値を使用すると、センサー駆動またはロックされたポートレートに戻すことができます。個人的には、この質問に対する別の回答で提案されているように、マニフェストで何かに設定し、後で必要に応じて Android SDK で上記の呼び出しを使用して変更するのが好きです。
私のOnCreate(Bundle)
では、通常、次のことを行います。
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
マニフェストでアクティビティの向きを指定できます。ここを参照してください。
<activity android:allowTaskReparenting=["true" | "false"]
...
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
...
"adjustResize", "adjustPan"] >
以下は、ランドスケープ モードですべてのアクティビティを表示するために使用したコードです。
<activity android:screenOrientation="landscape"
android:configChanges="orientation|keyboardHidden"
android:name="abcActivty"/>
迅速かつ簡単な解決策は AndroidManifest.xml ファイルです。強制的にランドスケープ モードにするアクティビティごとに次のコードを追加します。
android:screenOrientation="landscape"
これは Xamarin.Android で機能します。OnCreate() で
RequestedOrientation = Android.Content.PM.ScreenOrientation.Landscape;
それでおしまい!!この修正を長い間待っています。
(プログラムによって) ランドスケープ モードを必要とするアクティビティの二重開始に関する古い Android の問題があります。setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)
Android が起動時にランドスケープ モードになるようになりました。
Arslan、マニフェストには既に方法があるのに、なぜプログラムでオリエンテーションを強制したいのですか
<activity android:name=".youractivityName" android:screenOrientation="portrait" />
を押しCTRL+F11
て画面を回転させます。