4

デバイス全体の画面の向きをプログラムで制御して変更するにはどうすればよいですか?これを行うことができるいくつかのアプリへのリンクは次のとおりです。

http://dandroidtabletpc.com/download-total-screen-control-1-9-3-full-android-apk.html/

http://ru.androidzoom.com/android_applications/tools/ultimate-rotation-control_bznhn.html

多分誰かがこのようなオープンソースプロジェクトを知っていますか?

4

4 に答える 4

13
@Override
    public void onCreate(Bundle savedInstanceState) {
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
}

また

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
于 2012-04-21T09:05:58.177 に答える
5

私が知っている2つのアプローチは次のとおりです。

画面の向きを強制する

設定した向きでアプリ独自の向き設定をオーバーライドする場合は、「Android で画面の向きをグローバルに強制する方法は?」の手順に従ってください。.

無理なく向きを変える

設定した向きでアプリ自体の向きの設定を上書きしたくない場合は、まず、電話の自動回転がオフになっていることを確認してください。

Settings.System.putInt(
    this.contentResolver,
    Settings.System.ACCELEROMETER_ROTATION,
    0 //0 means off, 1 means on
);

次に、電話のユーザーの向きを設定します。

Settings.System.putInt(
    getContentResolver(),
    Settings.System.USER_ROTATION,
    Surface.ROTATION_0 //Use any of the Surface.ROTATION_ constants
);

putIntの戻り値をチェックして、変更が成功したことを確認することを忘れないでください。

また、次の許可が必要だと思います。

<uses-permission android:name="android.permission.WRITE_SETTINGS" />
于 2014-07-06T02:56:38.530 に答える
1

まず、Android では、コードまたは xml ファイルを使用して向きを設定していない場合、アプリにはデフォルトで向きがあります。

また、電話のインスパイトが縦向き/横向きモードであることが要件であり、単一の向きが必要な場合は、oncreate メソッドで次のようにコードを使用してロックできます。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  //or
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
于 2012-04-21T09:18:26.603 に答える
-1

以下のコードを使用して、アクティビティの現在の方向を取得できます。

int orientation = getResources().getConfiguration().orientation;

if(orientation == Configuration.ORIENTATION_LANDSCAPE)
{
     Log.v(TAG,"Configuration.ORIENTATION_LANDSCAPE");              
}
else if(orientation == Configuration.ORIENTATION_PORTRAIT)
{
    Log.v(TAG, "Configuration.ORIENTATION_PORTRAIT");               
}
else if(orientation == Configuration.ORIENTATION_SQUARE)
{
    Log.v(TAG, "Configuration.ORIENTATION_SQUARE");
}
else if(orientation == Configuration.ORIENTATION_UNDEFINED)
{
    Log.v(TAG, "Configuration.ORIENTATION_UNDEFINED");
}

次に、以下のコードを使用して、アクティビティの向きを縦向きまたは横向きに設定できます。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
于 2012-04-21T10:04:30.727 に答える