Androidアプリの一部のビューでランドスケープモードを無効にするにはどうすればよいですか。
Android:screenOrientation="portrait"
をAndroidManifest.xmlのアクティビティに追加します。例えば:
<activity Android:name=".SomeActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" />
編集:これは非常に人気のある答えになったので、ポートレートを強制することは頻繁に適用される問題の適切な解決策となることはめったにないので、私は非常に罪悪感を覚えます。
ポートレートの強制に関する主な注意点:
retainInstance
フラグメントの使用方法を学びます。そのため、ほとんどのアプリでは、電話のセンサー、ソフトウェア、および物理的な構成に、ユーザーがアプリとやり取りする方法を独自に決定させる必要があります。ただし、ユースケースでsensor
の向きのデフォルトの動作に満足できない場合は、いくつかのケースを検討してください。
nosensor
を使用します。これにより、ほとんどのタブレットでは横向きになり、ほとんどの携帯電話では縦向きになりますが、ほとんどの「通常の」アプリにはお勧めしません(携帯電話で横向きのソフトキーボードを入力したいユーザーや、多くのタブレットユーザーが縦向きで読みます-あなたがそれらを聞かせてください)。sensorPortrait
よりもportrait
の方が良い場合があります。これにより、逆さまのポートレートが可能になります。これは、タブレットの使用では非常に一般的です。私はこの記事を読むまでAndroidManifest.xml
ファイルスイッチを知らなかったので、私のアプリでは代わりにこれを使いました。
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // Fixed Portrait orientation
このAndroid:screenOrientation="portrait"
をマニフェストファイルのどこにあなたのアクティビティがこのように宣言されているかを追加します。
<activity Android:name=".yourActivity"
....
Android:screenOrientation="portrait" />
Javaコードを使ってやりたいのなら
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
onCreate()
でアクティビティのsetContentView
メソッドを呼び出す前に。
この助けとすべての人にとって簡単に理解できることを願っています...
ここでの多くの答えはあなたのAndroidManifest.xmlファイルで"portrait"
を使うことを示唆しています。これは良い解決策のように思えるかもしれません - しかしドキュメンテーションで述べられているように、あなたは景色しかないかもしれないデバイスを選び出しています。また、特定のデバイス(横長で最適に機能するデバイス)を縦長にすることを強制しており、正しい向きになっていません。
私の提案は、代わりに"nosensor"
を使うことです。これにより、デバイスはデフォルトの優先方向を使用したままになり、Google Playでの購入/ダウンロードはブロックされず、センサーが(私の場合はNDKの)ゲームを台無しにしないようになります。
ユーザー設定が必要な場合は、
それなら私はsetRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
をお勧めします
設定メニューから設定を変更できます。
私のタイマーは画面上にあるものに対応しなければならないので私はこれを必要とし、そして画面を回転させることは現在の活動を破壊するでしょう。
マニフェストに次のように追加するだけです。
Android:screenOrientation = "ポートレート"
<manifest
package="com.example.speedtestmeter"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="8" />
<application
Android:allowBackup="true"
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name="MainActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
Android:name="ComparisionActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" >
</activity>
<activity
Android:name="GaugeView"
Android:label="@string/app_name"
Android:screenOrientation="portrait" >
</activity>
<activity
Android:name="Resultactivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
アクティビティのonCreate()でこれを使用してください。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
アクティビティタグにこの属性を追加するだけです。
Android:screenOrientation="portrait"
androidManifest.xmlのAndroid:screenOrientation="sensorPortait"
を変更する必要があります
アクティビティの各マニフェストエントリに方向性を追加するという面倒なことをしたくない場合は、 'Activity'ではなくアプリケーションのすべてのアクティビティに継承されるBaseActivityクラス( 'Activity'または 'AppCompatActivity'を継承)を作成します。 'または' AppCompatActivity 'をクリックして、BaseActivityに次のコードを追加するだけです。
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// rest of your code......
}
Landscape mode for your Android app
(または単一のアクティビティ)を無効にしたい場合は、追加するだけです。
Android:screenOrientation="portrait"
AndroidManifest.xml
ファイルのactivityタグへ.
好きです:
<activity Android:name="YourActivityName"
Android:icon="@drawable/ic_launcher"
Android:label="Your App Name"
Android:screenOrientation="portrait">
もう1つの方法、プログラム的アプローチ。
あなたがプログラム的にこれをしたいならば。 Javaコードを使用する。ランドスケープモードで表示したくないアクティビティのJavaクラスに以下のコードを追加することでこれを行うことができます。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
私はそれがあなたを助けることを願っています。あなたがここに訪問することができるより多くの詳細については ここにリンクの説明を入力してください
ランドスケープモードを無効にしたいアクティビティにAndroid:screenOrientation="portrait"
を追加します。
マニフェストファイルに次のスニペットを追加します。
<activity Android:name=".yourActivity"
....
Android:screenOrientation="portrait"/>
このサポートのみ縦モード
Xamarin C#を使用している場合、これらの解決策のいくつかは機能しません。これが私が働くことがわかった解決策です。
[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]
上記のクラスは他のソリューションと同様にうまく機能しますが、グローバルには適用できず、各アクティビティヘッダーに配置する必要があります。
各活動の方向を設定する必要があります。
<activity
Android:name="com.example.SplashScreen2"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
Android:name="com.example.Registration"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
Android:name="com.example.Verification"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
Android:name="com.example.WelcomeAlmostDone"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
</activity>
<activity
Android:name="com.example.PasswordRegistration"
Android:label="@string/app_name"
Android:screenOrientation="portrait"
Android:theme="@Android:style/Theme.Black.NoTitleBar" >
</activity>
いくつかのビューで向きを変える方法
アクティビティ全体の方向をロックする代わりに、このクラスを使用して任意のビューから動的に方向を動的にロックできます。
あなたの見方をする 風景
OrientationUtils.lockOrientationLandscape(mActivity);
あなたの見方をする ポートレート
OrientationUtils.lockOrientationPortrait(mActivity);
ロック解除 Orientation
OrientationUtils.unlockOrientation(mActivity);
オリエンテーション利用クラス
import Android.app.Activity;
import Android.content.Context;
import Android.content.pm.ActivityInfo;
import Android.content.res.Configuration;
import Android.os.Build;
import Android.view.Surface;
import Android.view.WindowManager;
/* * This class is used to lock orientation of Android app in nay Android devices
*/
public class OrientationUtils {
private OrientationUtils() {
}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Locks the device window in actual screen mode. */
public static void lockOrientation(Activity activity) {
final int orientation = activity.getResources().getConfiguration().orientation;
final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay()
.getRotation();
// Copied from Android docs, since we don't have these values in Froyo
// 2.2
int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
// Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
if (!(Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO)) {
SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
} else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
if (orientation == Configuration.ORIENTATION_PORTRAIT) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
/** Unlocks the device window in user defined screen mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
アプリケーションマニフェストのactivityタグにAndroid:screenOrientation="portrait"
を追加するだけです。
例:
<activity Android:name=".ui.activities.MainActivity"
Android:screenOrientation="portrait"></activity>
つかいます
Android:configChanges="keyboardHidden|orientation"
Android:screenOrientation="portrait"
あなたのmanifest.xmlにこれを書くことであなたの特定の活動を常に縦長モードのままにさせることができます
<activity Android:name=".MainActivity"
Android:screenOrientation="portrait"></activity>
アクティビティのonCreate()メソッドに次の行を書くことで、アクティビティをpostraitモードのままにすることもできます。
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
oncreate()メソッド内にクラスを追加
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
このコードをマニフェストファイルに入れてください.......
<activity Android:name=".SunderFlowersActivity"
Android:label="@string/app_name"
Android:screenOrientation="portrait">
>
</activity>
すべてのアクティビティに共通の基本クラスを拡張しなくても、アプリケーション全体に対してこれを実行できます。
まず最初に、プロジェクトにApplicationサブクラスを含めるようにします。アプリの最初の起動時に呼び出されるonCreate()で、ActivityLifecycleCallbacksオブジェクト(APIレベル14+)を登録して、アクティビティライフサイクルイベントの通知を受け取ります。
これにより、アプリ内のアクティビティが開始された(または停止された、再開された、その他にかかわらず)たびに独自のコードを実行することができます。この時点で、新しく作成したアクティビティに対してsetRequestedOrientation()を呼び出すことができます。
そして、マニフェストファイルにapp:name = "。MyApp"を追加することを忘れないでください。
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
<Android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity Android:name=".MyActivity"
Android:screenOrientation="portrait"
Android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</Android>
AndroidManifest.xml ファイルにAndroid:screenOrientation="portrait"
を追加します。
例えば :
<activity Android:name=".MapScreen"
Android:screenOrientation="portrait"></activity>
<apphome>/platform/Android
ディレクトリにAndroidManifest.xml
を作成しました(生成されたものからコピーします)。次に、すべてのアクティビティ要素にAndroid:screenOrientation=
"portrait
"を追加します。
プロジェクトに以下の表彰を追加してください。
npmインストール
npm私は反応ネイティブオリエンテーションロッカー
それなら、 React_Native(あなたのプロジェクトフォルダ)/ Android/app/src/main/AndroidManifest.xml のようにマニフェストクラスを使います。
<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.SYSTEM_ALERT_WINDOW"/>
<application
Android:name=".MainApplication"
Android:label="@string/app_name"
Android:icon="@mipmap/ic_launcher"
Android:allowBackup="false"
Android:theme="@style/AppTheme">
<activity
Android:name=".MainActivity"
Android:label="@string/app_name"
Android:screenOrientation="landscape"
Android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
Android:windowSoftInputMode="adjustResize">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity Android:name="com.facebook.react.devsupport.DevSettingsActivity" />
</application>
ありがとうございました!
他の人を助けるために、AndroidManifest.xmlのACTIVITYにある次の属性だけが必要です。
Android:configChanges = "向き"
だから、完全な活動ノード:
<activity Android:name="Activity1"
Android:icon="@drawable/icon"
Android:label="App Name"
Android:configChanges="orientation">
それは私のために働いた、AndroidManifestファイルにこのコードを追加してみてください
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:roundIcon="@mipmap/ic_launcher_round"
Android:supportsRtl="true"
Android:screenOrientation="portrait"
Android:theme="@style/AppTheme">
....
....
</application>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="in.co.nurture.bajajfinserv">
<uses-permission Android:name="Android.permission.INTERNET"></uses-permission>
<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">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
属性またはAndroid:screenOrientationを使用して、縦長または横長モードでアクティビティを制限できます。
私たちのプログラムに複数のアクティビティがある場合は、どのモードのアクティビティでも任意のアクティビティを制限することができます。また、望まない他のアクティビティに影響を与えることはありません。
どちらもマニフェストクラスです。
<activity Android:name=".yourActivity"
....
Android:screenOrientation="portrait" />
またはプログラム的に
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
注: onCreate()
のアクティビティのsetContentView
メソッドの前にこれを呼び出す必要があります。
コトリンでは、同じことがプログラム的に以下を使って達成することができます
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
あなたのアクティビティが最初のデバイスの向きの状態に関連している場合は、onCreate
メソッドで現在のデバイスの向きを取得し、それを永遠に修正します。
int deviceRotation = ((WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
if(deviceRotation == Surface.ROTATION_0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_180)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else if(deviceRotation == Surface.ROTATION_90)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else if(deviceRotation == Surface.ROTATION_270)
{
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}