मैं चाहता हूं कि मेरा Android एप्लिकेशन केवल पोर्ट्रेट मोड में चला जाए?


358

मैं चाहता हूं कि मेरा Android एप्लिकेशन केवल पोर्ट्रेट मोड में चला जाए? मैं उसे कैसे कर सकता हूँ?

जवाबों:


778

प्रकट में, इसे अपनी सभी गतिविधियों के लिए निर्धारित करें:

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

मुझे समझाने दो:

  • आपके साथ android:configChanges="orientation"Android को बताता है कि आप अभिविन्यास के परिवर्तनों के लिए जिम्मेदार होंगे।
  • android:screenOrientation="portrait" आप डिफ़ॉल्ट अभिविन्यास मोड सेट करें।

50
महान नहीं होगा यदि हम अनुप्रयोग में सभी गतिविधियों के लिए "वैश्विक" अभिविन्यास सेट कर सकते हैं? ऐसा लगता है कि हमारे पास हर गतिविधि पर "चित्र" विशेषता को कॉपी / पेस्ट करने का कोई विकल्प नहीं है ...
एडुआर्डो कोल्हो

63
यह सेट करने के लिए पर्याप्त हैandroid:screenOrientation="portrait"
तक

11
@EduardoCoelho आप वास्तव में एक बेस क्लास बना सकते हैं PortraitActivityऔर setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
ऑनक्रीट

1
@Twinone: कैसे के बारे में जब विभिन्न गतिविधियों के विभिन्न उपवर्गों से विरासत में प्राप्त करना चाहते हैं Activity, जैसे कि एक गतिविधि का विस्तार होता है ListActivityजबकि दूसरे से बस Activity?
RestInPeace

3
@RestInPeace हाँ, अच्छी बात है। लेकिन यह मेरा विचार गलत नहीं है, यह सिर्फ जावा कई विरासत का समर्थन नहीं कर रहा है :)
ट्विनोन

57

में Android मेनिफेस्ट फ़ाइल, आपके लिए विशेषता डाल <activity>किandroid:screenOrientation="portrait"


2
मुझे जोड़ने दें: Android Sudio से 3.6 का उपयोग करने की आवश्यकता है Android: screenOrientation = "fullSensor" या Android: screenOrientation = "अनिर्दिष्ट"। fullSensor का अर्थ है कि या तो आपके पास "रोटेट ऑफ" है या नहीं, यह आपके द्वारा फोन को स्थानांतरित करने के आधार पर अभिविन्यास को बदल देगा। अनिर्दिष्ट साधन यदि आपके पास रोटेट चालू है तो यह केवल उस अभिविन्यास में रहेगा और यदि नहीं तो यह आपके द्वारा फोन को स्थानांतरित करने के आधार पर अभिविन्यास को बदल देगा।
किरगुड

24

दो तरीके हैं,

  1. android:screenOrientation="portrait"मैनिफ़ेस्ट फ़ाइल में प्रत्येक गतिविधि के लिए जोड़ें
  2. this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);प्रत्येक जावा फ़ाइल में जोड़ें ।

14
दूसरा विकल्प भयानक दुष्प्रभाव है कि पोर्ट्रेट में शुरू होने पर यह आपकी गतिविधि को फिर से शुरू करेगा।
जोकिम

4

मेनिफेस्ट में:

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

या: मेनऐक्टिविटी में

@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

मुझे मिलता है app/src/main/AndroidManifest.xml; lineNumber: 20; columnNumber: 50; The prefix "tools" for attribute "tools:ignore" associated with an element type "activity" is not bound.xmlns:tools="http://schemas.android.com/tools"मूल तत्व में जोड़ने से समस्या हल होती है
Aprabojad

3

पुरानी पोस्ट जो मुझे पता है। अपने एप्लिकेशन को हमेशा पोर्ट्रेट मोड में चलाने के लिए, यहां तक ​​कि जब अभिविन्यास हो सकता है या स्वैप किया जा सकता है आदि (उदाहरण के लिए टैबलेट पर) मैंने इस फ़ंक्शन को डिज़ाइन किया है जो कि पोर्ट्रेट और परिदृश्य को जानने की आवश्यकता के बिना डिवाइस को सही अभिविन्यास में सेट करने के लिए उपयोग किया जाता है। डिवाइस पर सुविधाओं का आयोजन किया जाता है।

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

    }

एक जादू की तरह काम करता है!

सूचना: this.activityअपनी गतिविधि से बदलें या इसे मुख्य गतिविधि में जोड़ें और हटाएं this.activity;-)


-5

मैं उपयोग करता हूं

 android:screenOrientation="nosensor"

यदि आप पोर्ट डाउन पोर्ट्रेट मोड का समर्थन नहीं करना चाहते हैं तो यह सहायक है।


अगर यह मुझे लगता है कि यह करता है, तो यह वास्तव में स्क्रीन को पोर्ट्रेट करने के लिए मजबूर नहीं करता है, जिसे आप करना चाहते हैं।
लस्सी किन्नुनेन

आप केवल इस टिप्पणी को क्यों नहीं हटाते हैं! इसका कोई मतलब नहीं है
अलेक्जेंडर Zaldostanov

एंड्रॉइड मेनिफेस्ट फाइल में केवल अपनी <गतिविधि> उस एंड्रॉइड के लिए विशेषता जोड़ें: स्क्रीन ऑरिएंटेशन = "पोर्ट्रेट"
अविनाश शिंदे

आपके उत्तर के लिए धन्यवाद, यह मेरे लिए उपयोगी है।
Md। शोफियुल्ला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.