Androidアプリの一部のビューで横向きモードを無効にするにはどうすればよいですか?
Androidアプリの一部のビューで横向きモードを無効にするにはどうすればよいですか?
回答:
android:screenOrientation="portrait"
AndroidManifest.xmlのアクティビティに追加します。例えば:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" />
編集:これは非常に人気のある回答になっているので、ポートレートを強制することが頻繁に適用される問題の正しい解決策であることはめったにないので、私は非常に罪悪感を感じます。
強制的な肖像画に関する主な警告:
retainInstance
フラグメントの使い方を学びます。そのため、ほとんどのアプリでは、ユーザーがアプリとどのようにやり取りしたいかについて、電話のセンサー、ソフトウェア、および物理的な構成が独自に決定できるようにする必要があります。ただし、sensor
ユースケースでのオリエンテーションのデフォルトの動作に満足できない場合でも、いくつかのケースについて検討する必要があります。
nosensor
向きをサポートすることを検討しますが、向きには使用します。これにより、ほとんどのタブレットでは横向きになり、ほとんどのスマートフォンでは縦向きになりますが、ほとんどの「通常の」アプリではこれをお勧めしません(一部のユーザーは自分の電話で横向きソフトキーボードを入力したいだけで、多くのタブレットユーザーは縦向きで読みます)。それらを許可する必要があります)。sensorPortrait
より良いよりかもしれportrait
アンドロイド2.3以降のために、これにより、タブレットを使用する場合によくある逆さまの縦向きが可能になります。私は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);
でのsetContentView
アクティビティのメソッドを呼び出す前onCreate()
。
このヘルプとすべての人にとって簡単に理解できることを願っています...
ここでの回答の多くは、"portrait"
AndroidManifest.xmlファイルでの使用を提案しています。これは良い解決策のように思えるかもしれませんが、ドキュメントに記載されているように、ランドスケープしかないデバイスを選択しています。また、特定のデバイス(横向きで最適に機能するデバイス)を縦向きにして、正しい向きにしないように強制しています。
私の提案は"nosensor"
代わりに使用することです。これにより、デバイスはデフォルトの優先方向を使用し、Google Playでの購入/ダウンロードをブロックせず、センサーが(私の場合はNDK)ゲームを台無しにしないようにします。
マニフェストにLike this Lineを追加するだけです
android:screenOrientation = "portrait"
<manifest
package="com.example.speedtest"
android:versionCode="1"
android:versionName="1.0" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="ComparisionActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>
すべてのアクティビティで共通の基本クラスを拡張する必要なく、アプリケーション全体でこれを行うことができます。
秘訣は、まずプロジェクトに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:screenOrientation="sensorPortrait"
AndroidManifest.xmlで変更する必要があります
この属性をアクティビティタグに追加するだけです。
android:screenOrientation="portrait"
アクティビティの各マニフェストエントリに向きを追加する手間を省きたい場合は、「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
(または1つのアクティビティ)必要がある場合は、追加するだけです。
android:screenOrientation="portrait"
AndroidManifest.xml
ファイル内のアクティビティタグに。
お気に入り:
<activity android:name="YourActivityName"
android:icon="@drawable/ic_launcher"
android:label="Your App Name"
android:screenOrientation="portrait">
別の方法、プログラムによるアプローチ。
これをプログラムで実行する場合、つまり。Javaコードを使用します。これを行うには、横長モードで表示したくないアクティビティのJavaクラスに以下のコードを追加します。
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
私はそれがあなたを助けることを願っています。詳細については、ここにアクセスすることができますここにリンクの説明を入力してください
android:screenOrientation="nosensor">
一部のビューで方向を変更する方法
アクティビティ全体の向きをロックする代わりに、このクラスを使用して、実際のビューから向きを動的にロックできます:-
ビューを横向きにする
OrientationUtils.lockOrientationLandscape(mActivity);
ビューを縦向きにする
OrientationUtils.lockOrientationPortrait(mActivity);
オリエンテーションの解除
OrientationUtils.unlockOrientation(mActivity);
オリエンテーションUtilクラス
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: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>
manifest.xmlに次のように記述することにより、特定のアクティビティを常に縦向きモードのままにすることができます。
<activity android:name=".MainActivity"
android:screenOrientation="portrait"></activity>
アクティビティのonCreate()メソッドに次の行を書き込むことで、アクティビティを強制的にポストレイトモードのままにすることもできます。
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
<android . . . >
. . .
<manifest . . . >
. . .
<application>
<activity android:name=".MyActivity"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
</activity>
</application>
</manifest>
</android>
以下をプロジェクトに賞賛してください、
npmインストール
npm私はネイティブオリエンテーションロッカーを反応させます
次に、React_Native(Your Project Folder)/ 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>
ありがとうございました!
<apphome>/platform/android
作成されたディレクトリ内AndroidManifest.xml
(生成されたディレクトリからコピー)。次に、すべてのアクティビティ要素にandroid:screenOrientation=
「portrait
」を追加します。
<?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を使用して、縦向きまたは横向きのアクティビティを制限できます。
私たちのプログラムに複数のアクティビティがある場合、モードのいずれか1つでアクティビティのいずれか1つを制限する自由があり、不要な他のアクティビティには影響しません。
他の誰かを助けることを期待して、AndroidManifest.xmlのACTIVITYの次の属性で十分です。
android:configChanges = "orientation"
したがって、完全なアクティビティノード:
<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>
最初のデバイスの向きの状態に関連するアクティビティの場合、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);
}