I want my android application to be only run in portrait mode?

前端 未结 6 2024
温柔的废话
温柔的废话 2020-11-30 16:26

I want my android application to be only run in portrait mode? How can I do that?

相关标签:
6条回答
  • 2020-11-30 17:07

    in the manifest:

    <activity android:name=".activity.MainActivity"
            android:screenOrientation="portrait"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    

    or : in the MainActivity

    @SuppressLint("SourceLockedOrientationActivity")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    
    0 讨论(0)
  • 2020-11-30 17:11

    In Android Manifest File, put attribute for your <activity> that android:screenOrientation="portrait"

    0 讨论(0)
  • 2020-11-30 17:13

    Old post I know. In order to run your app always in portrait mode even when orientation may be or is swapped etc (for example on tablets) I designed this function that is used to set the device in the right orientation without the need to know how the portrait and landscape features are organised on the device.

       private void initActivityScreenOrientPortrait()
        {
            // Avoid screen rotations (use the manifests android:screenOrientation setting)
            // Set this to nosensor or potrait
    
            // Set window fullscreen
            this.activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    
            DisplayMetrics metrics = new DisplayMetrics();
            this.activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
    
             // Test if it is VISUAL in portrait mode by simply checking it's size
            boolean bIsVisualPortrait = ( metrics.heightPixels >= metrics.widthPixels ); 
    
            if( !bIsVisualPortrait )
            { 
                // Swap the orientation to match the VISUAL portrait mode
                if( this.activity.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT )
                 { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); }
                else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ); }
            }
            else { this.activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR); }
    
        }
    

    Works like a charm!

    NOTICE: Change this.activity by your activity or add it to the main activity and remove this.activity ;-)

    0 讨论(0)
  • 2020-11-30 17:18

    I use

     android:screenOrientation="nosensor"
    

    It is helpful if you do not want to support up side down portrait mode.

    0 讨论(0)
  • 2020-11-30 17:23

    There are two ways,

    1. Add android:screenOrientation="portrait" for each Activity in Manifest File
    2. Add this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); in each java file.
    0 讨论(0)
  • 2020-11-30 17:29

    In the manifest, set this for all your activities:

    <activity android:name=".YourActivity"
        android:configChanges="orientation"
        android:screenOrientation="portrait"/>
    

    Let me explain:

    • With android:configChanges="orientation" you tell Android that you will be responsible of the changes of orientation.
    • android:screenOrientation="portrait" you set the default orientation mode.
    0 讨论(0)
提交回复
热议问题