Android में लैंडस्केप मोड को डिसेबल कैसे करें?


932

मैं अपने एंड्रॉइड ऐप में कुछ दृश्यों के लिए लैंडस्केप मोड को कैसे अक्षम कर सकता हूं?


3
क्या आप अनिवार्य रूप से ऑटो-रोटेट सुविधा को अक्षम करने का प्रयास कर रहे हैं। अपने चित्र दृश्यों में अपना पसंदीदा अभिविन्यास सेट करने का प्रयास करें? http://code.google.com/android/reference/android/R.styleable.html#AndroidManifestActivity_screenOrientation
adam

जवाबों:


1631

android:screenOrientation="portrait"AndroidManifest.xml में गतिविधि में जोड़ें । उदाहरण के लिए:

<activity android:name=".SomeActivity"
    android:label="@string/app_name"
    android:screenOrientation="portrait" />

संपादित करें: चूंकि यह एक सुपर-लोकप्रिय उत्तर बन गया है, इसलिए मैं बहुत ही दोषी महसूस करता हूं क्योंकि पोर्ट्रेट को मजबूर करना शायद ही कभी उन समस्याओं का सही समाधान है जो इसे अक्सर लागू होते हैं।
मजबूर चित्र के साथ प्रमुख चेतावनी:

  • यह गतिविधि जीवन चक्र की घटनाओं के बारे में सोचने या राज्य को ठीक से सहेजने / बहाल करने के लिए आपको अनुपस्थित नहीं करता है। ऐप रोटेशन के अलावा बहुत सारी चीजें हैं जो एक गतिविधि विनाश / मनोरंजन को ट्रिगर कर सकती हैं, जिसमें मल्टीटास्किंग जैसी अपरिहार्य चीजें शामिल हैं। यहां कोई छोटा रास्ता नहीं है; बंडलों और retainInstanceटुकड़ों का उपयोग करना सीखें ।
  • ध्यान रखें कि काफी समान iPhone अनुभव के विपरीत, कुछ डिवाइस हैं जहां पोर्ट्रेट स्पष्ट रूप से लोकप्रिय अभिविन्यास नहीं है। उन हार्डवेयर कीबोर्ड या खेल पैड के साथ उपकरणों पर कर रहे हैं जब एक ला एनवीडिया शील्ड, पर Chrome बुक , पर foldables , या पर सैमसंग डेक्स , चित्र के लिए मजबूर कर आपके ऐप्लिकेशन के अनुभव या तो सीमित या एक विशाल प्रयोज्य परेशानी बना सकते हैं। यदि आपके ऐप में एक मजबूत UX तर्क नहीं है जो अन्य झुकावों का समर्थन करने के लिए एक नकारात्मक अनुभव का कारण होगा, तो आपको शायद परिदृश्य को मजबूर नहीं करना चाहिए। मैं ऐसी चीजों के बारे में बात कर रहा हूं "यह एक निश्चित मॉडल डॉक में उपयोग किए जाने वाले टैबलेट के एक विशिष्ट मॉडल के लिए एक कैश रजिस्टर ऐप है।"

इसलिए अधिकांश ऐप्स को केवल फ़ोन सेंसर, सॉफ़्टवेयर और भौतिक कॉन्फ़िगरेशन को अपना निर्णय लेने देना चाहिए कि उपयोगकर्ता आपके ऐप के साथ सहभागिता कैसे करना चाहता है। कुछ मामलों के बारे में आप अभी भी सोच सकते हैं, हालाँकि, यदि आप sensorअपने उपयोग के मामले में अभिविन्यास के डिफ़ॉल्ट व्यवहार से खुश नहीं हैं :

  • यदि आपकी मुख्य चिंता आकस्मिक अभिविन्यास है, तो मध्य-गतिविधि में परिवर्तन होता है जो आपको लगता है कि डिवाइस के सेंसर और सॉफ़्टवेयर अच्छी तरह से सामना नहीं करेंगे (उदाहरण के लिए, एक झुकाव-आधारित गेम में) सहायक परिदृश्य और चित्र पर विचार करें, लेकिन उपयोग करना nosensor अभिविन्यास के लिए करें। यह अधिकांश टैबलेट और अधिकांश फोन पर पोर्ट्रेट पर परिदृश्य को मजबूर करता है, लेकिन मैं अभी भी अधिकांश "सामान्य" ऐप्स के लिए इसकी सिफारिश नहीं करूंगा (कुछ उपयोगकर्ता अपने फोन पर लैंडस्केप सॉफ्टबोर्ड में टाइप करना पसंद करते हैं, और कई टैबलेट उपयोगकर्ता पोर्ट्रेट में पढ़ते हैं - और आपको उन्हें देना चाहिए)।
  • यदि आपको अभी भी किसी कारण से पोर्ट्रेट की आवश्यकता है, sensorPortraitतो portraitएंड्रॉइड 2.3+ की तुलना में बेहतर हो सकता है ; यह उल्टा चित्र के लिए अनुमति देता है, जो टेबलेट उपयोग में काफी आम है।

54
इसे पूरे ऐप के लिए करना संभव है। इसे बाहर की जाँच करें stackoverflow.com/a/9784269/1300707
लियाम जॉर्ज बेट्सवर्थ

1
मैंने देखा कि एक और चित्र है: सेंसरपोर्ट। सेंसरपोर्ट और पोर्ट्रेट के बीच अंतर क्या है
जैकी

1
यदि आप Google के डॉक्स पढ़ते हैं : "पोर्ट्रेट ओरिएंटेशन, लेकिन डिवाइस सेंसर पर आधारित सामान्य या रिवर्स पोर्ट्रेट हो सकता है। एपीआई स्तर में जोड़ा गया।" तो - वह है - "चित्र, दाईं ओर ऊपर या नीचे, Android 2.3+ केवल।"
योनी समलान

2
जैसा कि मैंने नीचे अपने जवाब में उल्लेख किया है - कई मुद्दों के आसपास पाने के लिए, "नोसेंसर" एक बेहतर विकल्प है।
माइक वियर

1
मुझे कहना है कि मैं असहमत हूं। सभी अनुभव फोन पर लैंडस्केप मोड के साथ संगत नहीं हैं, इसलिए आपको यूएक्स को निर्णय लेने देना चाहिए, न कि सेंसर को। हालांकि टैबलेट पर ऐसा नहीं है।
रेनजो टिसोनी

110

मुझे AndroidManifest.xmlइस पोस्ट को पढ़ने तक फ़ाइल स्विच के बारे में पता नहीं था , इसलिए मेरे ऐप्स में मैंने इसके बजाय इसका उपयोग किया है:

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);     //  Fixed Portrait orientation

9
यदि आपकी डिवाइस निर्दिष्ट अभिविन्यास में नहीं है, तो यह आपकी गतिविधि को पहले लोड पर कूद सकता है।
डोरिए

मैं इस पद्धति का उपयोग कर रहा था, मैं इसे OnCreate में बुला रहा था तब मैं कुछ परिसंपत्ति फ़ाइलों से डेटा पढ़ूंगा। अगर मैं ऐप को लैंडस्केप ओरिएंटेशन में डिवाइस के साथ शुरू करूंगा तो यह घूम जाएगा लेकिन इसके परिणामस्वरूप उन शुरुआती संपत्तियों को गलत तरीके से पढ़ा जा सकेगा, कुछ अजीब कारण के लिए (शायद कुछ खत्म होने के लिए रोटेशन के लिए इंतजार करना चाहिए)। Xml विकल्प का उपयोग करने से यह समस्या उत्पन्न नहीं हुई।
राडू सिमियोनेस्कु

1
यह एंड्रॉइड प्रोग्राम के लिए स्टार्ट अप अनुक्रम के साथ एक मुद्दा हो सकता है। आप setRequestedOrientation () को onResume () में स्थानांतरित करने का प्रयास कर सकते हैं ???
रिच

45

इसे android:screenOrientation="portrait"अपनी मैनिफ़ेस्ट फ़ाइल में जोड़ें जहाँ आप अपनी गतिविधि को इस तरह घोषित करते हैं

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

यदि आप java code try का उपयोग करना चाहते है

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

इससे पहले कि आप setContentViewअपनी गतिविधि के लिए विधि कॉल करेंonCreate()

आशा है कि इस मदद और आसानी से सभी के लिए समझ में आता है ...


29

यहां बहुत सारे उत्तर "portrait"आपके AndroidManifest.xml फ़ाइल में उपयोग करने का सुझाव दे रहे हैं । यह एक अच्छा समाधान की तरह लग सकता है - लेकिन जैसा कि प्रलेखन में उल्लेख किया गया है, आप ऐसे उपकरणों को गा रहे हैं जिनमें केवल परिदृश्य हो सकता है। आप चित्र में जाने के लिए कुछ उपकरणों को भी मजबूर कर रहे हैं (जो परिदृश्य में सबसे अच्छा काम करते हैं), उचित अभिविन्यास प्राप्त नहीं कर रहे हैं।

मेरा सुझाव "nosensor"इसके बजाय उपयोग करना है। यह डिवाइस को अपने डिफ़ॉल्ट पसंदीदा अभिविन्यास का उपयोग करने के लिए छोड़ देगा, Google Play पर किसी भी खरीदारी / डाउनलोड को ब्लॉक नहीं करेगा, और यह सुनिश्चित करेगा कि सेंसर आपके (NDK, मेरे मामले में) गेम में गड़बड़ न करे।


चूंकि बहुत से लोग इस पर मतदान कर रहे हैं, इसलिए मैं कहना चाहता हूं कि मैं "पोर्ट्रेट" का सुझाव देने वाले अन्य उत्तरों के साथ चला गया हूं क्योंकि कुछ अस्पष्ट डिवाइस वास्तव में अप्रत्याशित रूप से प्रतिक्रिया करते हैं जब इन-ऐप स्क्रीन रोटेशन को लागू करना चाहते हैं, जो एक बन गया आवश्यकता बाद में मेरे लिए। मुझे यह भी संदेह है कि "पोर्ट्रेट" वाले किसी भी ऐप को किसी भी Google Play सेटअप द्वारा अवरुद्ध किया जाएगा।
माइक वियर

Google Play वास्तव में लैंडस्केप-ओनली डिवाइसेस पर पोट्रेट-ओनली ऐप्स को फ़िल्टर करता है, इस पेज पर नोट देखें: developer.android.com/guide/topics/manifest/… ("आपके द्वारा घोषित मूल्य Google जैसी सेवाओं द्वारा फ़िल्टरिंग को सक्षम करता है" प्ले ")
चमत्कार 2k

14

बस इस पंक्ति को अपने घोषणापत्र में जोड़ें

एंड्रॉयड: screenOrientation = "चित्र"

<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>   

13

यदि आप उपयोगकर्ता-सेटिंग्स चाहते हैं,

तो मैं सलाह दूंगा setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

आप सेटिंग मेनू से सेटिंग बदल सकते हैं।

मुझे इसकी आवश्यकता है क्योंकि मेरी टाइमर स्क्रीन पर क्या है, और स्क्रीन को घुमाने से वर्तमान गतिविधि नष्ट हो जाएगी।


9

आप अपनी सारी गतिविधियों के लिए एक सामान्य आधार वर्ग का विस्तार किए बिना अपने पूरे आवेदन के लिए ऐसा कर सकते हैं।

चाल यह सुनिश्चित करने के लिए है कि आप अपने प्रोजेक्ट में एप्लिकेशन उपवर्ग शामिल करें। अपने ऑनक्रिएट () में, जब आपका ऐप पहली बार शुरू होता है, तो आप गतिविधि जीवनचक्र की घटनाओं की सूचनाएँ प्राप्त करने के लिए एक एक्टिविटी लाइफ़साइकल कॉलबैक ऑब्जेक्ट (एपीआई स्तर 14+) को पंजीकृत करते हैं।

यह आपको अपने कोड को निष्पादित करने का अवसर देता है जब भी आपके ऐप में कोई भी गतिविधि शुरू होती है (या बंद हो जाती है, या फिर से शुरू हो जाती है, या जो भी हो)। इस बिंदु पर आप नई बनाई गई गतिविधि पर setRequestedOrientation () कॉल कर सकते हैं।

और अपनी मैनिफ़ेस्ट फ़ाइल में ऐप: 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);
            }
            ....
        });
    }
}


7

आपको android:screenOrientation="sensorPortrait"AndroidManifest.xml में बदलना चाहिए



6

यदि आप गतिविधि के प्रत्येक प्रकट प्रविष्टि में अभिविन्यास को जोड़ने की परेशानी से बेहतर तरीके से नहीं गुजरना चाहते हैं, तो एक बेसएक्टिविटी क्लास ('गतिविधि' या 'AppCompatActivity' विरासत करें) बनाएं, जो 'एक्टिविटी' के बजाय आपके एप्लिकेशन की प्रत्येक गतिविधि को विरासत में मिलेगा। 'या' AppCompatActivity 'और बस अपने BaseActivity में निम्नलिखित कोड जोड़ें:

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    // rest of your code......
}

5

android:screenOrientation="portrait"उस गतिविधि में जोड़ें जिसे आप लैंडस्केप मोड को अक्षम करना चाहते हैं।


5

यदि आप निष्क्रिय करना चाहते हैं Landscape mode for your android app(या एक गतिविधि) आपको बस इतना करना है,

android:screenOrientation="portrait"AndroidManifest.xmlफ़ाइल में गतिविधि टैग के लिए।

पसंद:

<activity android:name="YourActivityName" 
    android:icon="@drawable/ic_launcher" 
    android:label="Your App Name" 
    android:screenOrientation="portrait">

एक और तरीका है, प्रोग्रामेटिक दृष्टिकोण।

यदि आप इस प्रोग्राम को करना चाहते हैं। जावा कोड का उपयोग करना। आप गतिविधि के जावा वर्ग में नीचे दिए गए कोड को जोड़कर ऐसा कर सकते हैं जिसे आप परिदृश्य मोड में प्रदर्शित नहीं करना चाहते हैं।

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

मुझे आशा है कि यह आपकी मदद करता है। अधिक जानकारी के लिए आप यहां लिंक विवरण दर्ज कर सकते हैं


2
चूंकि बहुत से उत्तर सलाह देते हैं कि @Phoenix और @Yoni की अच्छी सलाह का खंडन करते हैं, मुझे लगता है कि एक अच्छी बॉटम लाइन है कि वे क्या सुझाव दें:android:screenOrientation="nosensor">
DSlomer64

1
@ DSlomer64 हां। यदि आप टैबलेट डिवाइस के साथ सामना करना चाहते हैं, तो आपको पोर्ट्रेट के बजाय नोसेंसर मूल्य का उपयोग करना चाहिए
IntelliJ Amiya

5

कुछ दृश्य में अभिविन्यास कैसे बदलें

संपूर्ण गतिविधि के लॉकिंग ओरिएंटेशन के बजाय आप इस क्लास का उपयोग अपने किसी भी दृष्टिकोण से गतिशील रूप से लॉक ओरिएंटेशन के लिए कर सकते हैं: -

अपना दृश्य लैंडस्केप करें

OrientationUtils.lockOrientationLandscape(mActivity);

अपने विचार पोर्ट्रेट बनाएं

OrientationUtils.lockOrientationPortrait(mActivity);

ओरिएंटेशन अनलॉक करें

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);
    }

}


4

आपको प्रत्येक गतिविधि का ओरिएंटेशन सेट करना होगा।

<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>

4

oncreate () विधि के अंदर कक्षा जोड़ें

 setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

4

यदि आप Xamarin C # का उपयोग कर रहे हैं तो इनमें से कुछ समाधान काम नहीं करेंगे। यहाँ समाधान मैं काम करने के लिए मिला है।

[Activity(MainLauncher = true, Icon = "@drawable/icon", ScreenOrientation = ScreenOrientation.Portrait)]

कक्षा के ऊपर अन्य समाधानों की तरह ही अच्छी तरह से काम करता है, यह भी विश्व स्तर पर लागू नहीं है और प्रत्येक गतिविधि हेडर में रखा जाना चाहिए।


4

आप अपनी विशेष गतिविधि को अपने घोषणापत्र में इसे लिखकर हमेशा पोर्ट्रेट मोड में बने रहने के लिए बाध्य कर सकते हैं

 <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);

}

3
<android . . . >
    . . .
    <manifest . . . >
        . . .
        <application>
            <activity android:name=".MyActivity" 
                android:screenOrientation="portrait" 
                android:configChanges="keyboardHidden|orientation">
            </activity>
        </application>
    </manifest>
</android>

3

अपने प्रोजेक्ट पर नीचे की तारीफ जोड़ें,

npm स्थापित करें

npm i- देशी-अभिविन्यास-लॉकर प्रतिक्रिया

तब आप मेनिफ़ेस्ट क्लास का उपयोग करते हैं जैसे, 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>

धन्यवाद!


2

में <apphome>/platform/androidनिर्देशिका बनाई AndroidManifest.xml(उत्पन्न एक से कॉपी)। फिर सभी गतिविधि तत्वों में android:screenOrientation=" portrait" जोड़ें ।


2
 <?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 का उपयोग करके गतिविधि या पोर्ट्रेट मोड में गतिविधि को प्रतिबंधित कर सकते हैं।

अगर हमारे कार्यक्रम में एक से अधिक गतिविधियाँ हैं, तो आपको किसी भी एक मोड में किसी भी गतिविधि को प्रतिबंधित करने की स्वतंत्रता है और यह कभी भी दूसरों को प्रभावित नहीं करता है जो आप नहीं चाहते हैं।


2

या तो मैनिफ़ेस्ट क्लास में।

<activity android:name=".yourActivity"
    ....
    android:screenOrientation="portrait" />

या प्रोग्रामिक रूप से

setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

नोट: आपको setContentViewअपनी गतिविधि के लिए विधि से पहले इसे कॉल करना चाहिए onCreate()


2

AndroidManifest.xml फ़ाइल android:screenOrientation="portrait"में जोड़ें ।

उदाहरण के लिए :

<activity android:name=".MapScreen" 
 android:screenOrientation="portrait"></activity>

1

किसी और की मदद करने की उम्मीद में, AndroidManifest.xml में गतिविधि पर निम्नलिखित विशेषता आपको सभी की आवश्यकता है:

एंड्रॉयड: configChanges = "अभिविन्यास"

तो, पूर्ण गतिविधि नोड:

<activity android:name="Activity1" 
    android:icon="@drawable/icon" 
    android:label="App Name" 
    android:configChanges="orientation">

बहुत सारे उत्तर बचे हैं, आपको अधिक जानकारी प्रदान करनी चाहिए, कि आपको क्यों उपयोग करना चाहिए। विशेष रूप से डॉक्स का कहना है कि इस विकल्प का उपयोग नहीं कर रहा है: "नोट: इस विशेषता का उपयोग करने से बचा जाना चाहिए और इसे केवल अंतिम उपाय के रूप में उपयोग किया जाना चाहिए। कृपया कॉन्फ़िगरेशन परिवर्तन के कारण पुनरारंभ को ठीक से कैसे प्रबंधित करें, इसके बारे में अधिक जानकारी के लिए हैंडलिंग रनटाइम परिवर्तन पढ़ें।" डेवलपर
.android.com

1

कोटलिन में नीचे प्रोग्राम का उपयोग करके समान रूप से हासिल किया जा सकता है

requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT

1

इसने मेरे लिए काम किया, इस कोड को 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>

मैं एक महान समाधान होता, क्योंकि आपको प्रति गतिविधि सेट नहीं करना पड़ता। दुर्भाग्य से, मेरे ऐप में काम नहीं करता है।
मिरोस्लाव कोलोडी

1

इसे अपने प्रकट में रखो।

<activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="sensorPortrait" />

ओरिएंटेशन पोर्ट्रेट होगा, लेकिन यदि उपयोगकर्ता का फोन उल्टा है, तो यह सही तरीका दिखाता है। (तो आपकी स्क्रीन 180 डिग्री घूम जाएगी)।


यदि मल्टी-विंडो मोड में गतिविधि चल रही है तो सिस्टम इस विशेषता को अनदेखा करता है


0

यदि आपकी गतिविधि पहले डिवाइस ओरिएंटेशन स्थिति से संबंधित है, तो वर्तमान डिवाइस ओरिएंटेशन को 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);
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.