Screen Orientations in Android with Examples

Screen Orientation, also known as screen rotation, is the attribute of activity element in android. When screen orientation change from one state to other, it is also known as configuration change.

States of Screen orientation
There are various possible screen orientation states for any android application, such as:

  • ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
  • ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
  • ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
  • ActivityInfo.SCREEN_ORIENTATION_USER
  • ActivityInfo.SCREEN_ORIENTATION_SENSOR
  • ActivityInfo.SCREEN_ORIENTATION_BEHIND
  • ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
  • ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
  • ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT
  • ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT

The initial orientation of the Screen has to be defined in the AndroidManifest.xml file.

Syntax:

AndroidManifest.xml

filter_none

edit
close

play_arrow

link
brightness_4
code

<activity android:name="package_name.Your_ActivityName"  
    android:screenOrientation="orientation_type">  
</activity>  

chevron_right


Example:



    android:screenOrientation="orientation_type">

How to change Screen orientation?
Here is an example of an Android application that changes screen orientation for Landscape and Portrait mode.

We will create two activities of different screen orientation.

  • The first activity will be as “portrait” orientation and
  • Second activity as “landscape” orientation state.

Step-by-Step demonstration:

  • Creating the activities: There will be two activities and hence two XML files, one for each activity.
    1. activity_main.xml: XML file for first activity consist of constraint layout with Button and Text View in it. This activity is in Landscape state.
    2. activity_next.xml: XML file for second activity consist of constraint layout with Text View in it. This activity is in Landscape state.

    Below is the code for both activities:

    activity_main.xml

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?xml version="1.0" encoding="utf-8"?>  
    <!--Constraint Layout-->
    <android.support.constraint.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        tools:context="com.geeksforgeeks.screenorientation.MainActivity">
        <!--Button to launch next activity with onClick-->  
        <Button  
            android:id="@+id/b1"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"
            android:text="Next Activity"    
            android:layout_marginTop="100dp"  
            android:onClick="onClick"
            android:layout_marginBottom="10dp"   
            app:layout_constraintBottom_toBottomOf="parent"  
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintVertical_bias="0.613"  
            app:layout_constraintHorizontal_bias="0.612"  
            app:layout_constraintStart_toStartOf="parent"  
            app:layout_constraintTop_toBottomOf="@+id/tv1"  
             /> 
        <!--TextView -->
        <TextView  
            android:text="Potrait orientation"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_centerHorizontal="true"   
            android:layout_marginTop="124dp"
            android:textSize="25dp"  
            app:layout_constraintEnd_toEndOf="parent"  
            app:layout_constraintHorizontal_bias="0.502"  
            app:layout_constraintStart_toStartOf="parent"  
            app:layout_constraintTop_toTopOf="parent" />  
    </android.support.constraint.ConstraintLayout>  

    chevron_right

    
    

    activity_next.xml

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?xml version="1.0" encoding="utf-8"?>  
      
    <!--Constraint layout-->  
    <android.support.constraint.ConstraintLayout
      
        xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_height="match_parent"  
        android:layout_width="match_parent"    
        tools:context="com.geeksforgeeks.screenorientation.NextActivity">  
      
        <!--TextView-->  
        <TextView  
            android:id="@+id/tv"  
            android:text="Landscape orientation"
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"    
            android:layout_marginTop="170dp"    
            android:textSize="22dp"  
            app:layout_constraintStart_toStartOf="parent" 
            app:layout_constraintEnd_toEndOf="parent"  
            app:layout_constraintHorizontal_bias="0.502"  
            app:layout_constraintTop_toTopOf="parent" />  
    </android.support.constraint.ConstraintLayout

    chevron_right

    
    

  • Creating the Java file: There will be two activities and hence two Java files, one for each activity.
    1. MainActivity.java: Java file for Main Activity, in which setOnClick() listener is attached to the button to launch next activity with different orientation.
    2. NextActivity.java: Java file for Next Activity which is in Landscape mode.

    MainActivity.java

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    package com.geeksforgeeks.screenorientation;
      
    import android.support.v7.app.AppCompatActivity;
    import android.content.Intent;
    import android.view.View;
    import android.widget.Button;
      
    public class MainActivity extends AppCompatActivity {
      
        // declare button variable
        Button button;
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
      
            // initialise button with id
            button = findViewById(R.id.b1);
        }
      
        // onClickListener attached to button
        // to send intent to next activity
        public void onClick(View v)
        {
            // Create instance of intent and
            // startActivity with intent object
            Intent intent
                = new Intent(
                    MainActivity.this,
                    NextActivity.class);
            startActivity(intent);
        }
    }

    chevron_right

    
    

    NextActivity.java

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    package com.geeksforgeeks.screenorientation;
      
    import android.support.v7.app.AppCompatActivity;
      
    public class MainActivity extends AppCompatActivity {
      
        @Override
        protected void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    }

    chevron_right

    
    

  • Updating the AndroidManifest file: In AndroidManifest.xml file, add the screenOrientation state in activity along with its orientation. Here, we provide “portrait” orientation for MainActivity and “landscape” for NextActivity.

    Below is the code for AndroidManifest file:

    AndroidManifest.xml

    filter_none

    edit
    close

    play_arrow

    link
    brightness_4
    code

    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
        package="com.geeksforgeeks.screenorientation">  
        
        <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"
            <!-Define potrait orientation for Main activity-->  
            <activity  
                android:name="com.geeksforgeeks.screenorientation.MainActivity"  
                android:screenOrientation="portrait">  
                <intent-filter>  
                    <action android:name="android.intent.action.MAIN" />  
                    <category android:name="android.intent.category.LAUNCHER" />  
                </intent-filter>  
            </activity
            <!--Define landscape orientation for NextActivity--> 
            <activity android:name=".NextActivity"  
                android:screenOrientation="landscape">  
            </activity>  
        </application>  
    </manifest>   

    chevron_right

    
    

  • Output:
    1. Activity 1:
    2. Activity 2:

Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.


Article Tags :
Practice Tags :


5


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.