On Developing Android application, some application has needed only Portrait mode only (Game: Candy crush) or Portrait Orientation for an entire(full) app or particular on activity. Here we are sharing some common ways to achieve Portrait Mode.
How to disable landscape mode for some of the views in my Android app?
There are 2 ways to achieve Activity level Orientation control.
1. Add android:screenOrientation="portrait"
to the activity in the AndroidManifest.xml.
<activity android:name=".MyActivity" android:label="@string/app_name" android:screenOrientation="portrait" />
2. Setting programmatically in Java
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Note : In Activity you should call this before
setContentView
inonCreate()
method.
In Kotlin same can be programmatically achieved using this code
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
And of Landscape in Kotlin
requestedOrientation = (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
Complete code in Kotlin
import android.content.pm.ActivityInfo import android.support.v7.app.AppCompatActivity import android.os.Bundle class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) requestedOrientation = (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_main) } }
How to set an entire android application in portrait mode only?
We are giving example in Kotlin language, Using 2 activity for proper testing, should work on both activities.
for beginners follow this tutorial first Build Your First Android App in Kotlin
Step 1. Create MyApplication class and extend Application class
add following code and methods
package `in`.eyehunt.androidapplicationportraitmode import android.app.Activity import android.app.Application import android.content.pm.ActivityInfo import android.os.Bundle /** * Created by Eyehunt Team on 31/05/18. */ class MyApplication : Application() { override fun onCreate() { super.onCreate() registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) { activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; } override fun onActivityPaused(activity: Activity?) { } override fun onActivityResumed(activity: Activity?) { } override fun onActivityStarted(activity: Activity?) { } override fun onActivityDestroyed(activity: Activity?) { } override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) { } override fun onActivityStopped(activity: Activity?) { } }) } }
Step 2. Don’t forget to add an application in AndroidManifest.xml.
<application android:name=".MyApplication" ... </application>
Complete code AndroidManifest.xml.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="in.eyehunt.androidapplicationportraitmode"> <application android:name=".MyApplication" 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"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application> </manifest>
Step 3. Create resource layout file activity_second.xml and add following code
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="56dp" android:text="Second Activity" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
Step 4. Create SecondActivity.kt and add this code
package `in`.eyehunt.androidapplicationportraitmode import android.os.Bundle import android.support.v7.app.AppCompatActivity /** * Created by Eyehunt Team on 31/05/18. */ class SecondActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_second) } }
Step 5. Add button in activity_main.xml file, complete code
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="in.eyehunt.androidapplicationportraitmode.MainActivity"> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button_goto" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginStart="8dp" android:layout_marginTop="32dp" android:text="Go to Second Activity" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" /> </android.support.constraint.ConstraintLayout>
Step 6. Add button_goto.setOnClickListener in MainActivity.kt
for not more about Kotlin Android must read this tutorial: Kotlin Android basic fundamental codes
package `in`.eyehunt.androidapplicationportraitmode import android.content.Intent import android.content.pm.ActivityInfo import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.view.View import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) //requestedOrientation = (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_main) button_goto.setOnClickListener(View.OnClickListener { val intent = Intent(this, SecondActivity::class.java) startActivity(intent) }) } }
Step 6. Run the application, in an emulator or On your Android device
Output screenshots Android Application in Portrait mode kotlin example :
Download source code Android Application in Portrait mode example :
Tag: How to disable landscape mode for the entire application?
or How to force the Android app only “Portrait” orientation mode?
or I want my android application to be only run in portrait mode?
Note : This example (Project) is developed in Android Studio 3.0.1 ,tested on Android 7.1.1 ( Android Nougat), compile SDK version API 26: Android 8.0 (Oreo)
MinSdkVersion=”15″
TargetSdkVersion=”26″
Coding in Kotlin