टैबलेट और लैंडस्केप में पोर्ट्रेट के लिए एंड्रॉइड ऐप के ओरिएंटेशन को कैसे लॉक करें?


83

मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं जिसका अभिविन्यास मैं लैंडस्केप मोड में नहीं बदलना चाहता जब उपयोगकर्ता डिवाइस को घुमाता है। इसके अलावा, मैं चाहता हूं कि लॉक ओरिएंटेशन फोन पर पोर्ट्रेट मोड और टैबलेट्स पर लैंडस्केप मोड हो। क्या यह हासिल किया जा सकता है, यदि हाँ तो कैसे? धन्यवाद।


2
@CommonsWare: मेरे ऐप में लंबी सूचियों के साथ मेनू हैं, जो फोन पर पॉट्रेट मोड में बहुत अधिक कुशलता से ट्रैवर्स किए गए हैं।
अंकित राव

3
फिर एक बेहतर GUI डिज़ाइन के साथ आए, जो आपके उपयोगकर्ताओं को किसी भी अभिविन्यास में उनके उपकरणों का उपयोग करने की क्षमता का सम्मान करता है।
कॉमन्सवेयर

जवाबों:


157

आपको बस अपनी फ़ाइल में गतिविधि तत्व के अंदर की संपत्ति को परिभाषित करना है AndroidManifest.xml। यह चित्र के लिए आपके अभिविन्यास को प्रतिबंधित करेगा।

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

उदाहरण:

        <activity
            android:name="com.example.demo_spinner.MainActivity"
            android:label="@string/app_name"
            android:screenOrientation="portrait" >
        </activity>

यदि आप चाहते हैं कि यह पूरे ऐप पर लागू हो, तो एप्लिकेशन टैग के अंदर नीचे की संपत्ति को परिभाषित करें:

        <application>
         android:screenOrientation="sensorPortrait"
        </application>

एडुअर्ड लुका की टिप्पणी के अनुसार अतिरिक्त, screenOrientation="sensorPortrait"आप 180 डिग्री से रोटेशन को सक्षम करना चाहते हैं, तो आप इसका उपयोग भी कर सकते हैं ।


21
या sensorPortraitयदि आप चाहते हैं कि उपयोगकर्ता 180 डिग्री तक स्क्रीन को घुमाने में सक्षम हो :)
एडुआर्ड लुका

44

आपको android:screenOrientation="portrait"अपने में निर्देश जोड़ना होगा AndroidManifest.xml। यह आपके <activity>टैग में किया जाना है ।

इसके अलावा, एंड्रॉइड डेवलपर्स गाइड बताता है कि:

[...] आपको यह भी स्पष्ट रूप से घोषित करना चाहिए कि आपके आवेदन में तत्व के साथ पोर्ट्रेट या लैंडस्केप ओरिएंटेशन की आवश्यकता है। उदाहरण के लिए, <uses-feature android:name="android.hardware.screen.portrait" />


6
अच्छा अभ्यास उद्धरण के लिए +1 और क्योंकि यह स्वीकृत उत्तर होना चाहिए, क्योंकि यह सही है और पहले पोस्ट किया गया था ...
एडुआर्ड लुका

7
क्या कोई वैश्विक तरीका है?
टायलर Pfaff

21

मैं देख सकता हूं कि आपने एक ऐसा उत्तर स्वीकार कर लिया है, जो आपकी समस्या को पूरी तरह से हल नहीं करता है:

android:screenOrientation="portrait" 

यह आपके ऐप को फ़ोन और टैबलेट दोनों पर पोर्ट्रेट होने के लिए मजबूर करेगा।

आप का उपयोग करके डिवाइस के "पसंदीदा" अभिविन्यास में मजबूर एप्लिकेशन हो सकते हैं

android:screenOrientation="nosensor"

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


सेटिंग "nosensor" आप कम से सरकारी डॉक्स में अधिक पढ़ सकते हैं के बारे में उत्सुक उन लोगों के लिए developer.android.com/guide/topics/manifest/activity-element
जेम्स जॉर्डन टेलर

11

यह हो सकता है .. आपको यह पहचानना होगा कि यह टैबलेट है या प्रोग्रामेटिक रूप से फोन ... पहले चेक डिवाइस फोन या टैबलेट है

निर्धारित करें कि क्या डिवाइस एक स्मार्टफोन या टैबलेट है?

टेबलेट या फ़ोन - Android

फिर......

if(isTablet)
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);      
}else
{
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

हाय @ भावेश, यह एंड्रॉइड 9 मोबाइल के लिए काम नहीं कर रहा है।
मणिकंदन के

हम कैसे पहचान सकते हैं कि यह टैबलेट है ... आपने यह नहीं बताया ...
अब्दुल वाहिद

आप संपादित उत्तर देख सकते हैं। मैंने इसमें शामिल किया है कि कैसे निर्धारित किया जाए कि डिवाइस एक स्मार्टफोन या टैबलेट है?
भावेश हिरपारा

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

मुख्य गतिविधि में जोड़ें और जोड़ें

android:configChanges="keyboardHidden"

जब कीबोर्ड कहा जाता है, तो अपने प्रोग्राम को मोड में रखने के लिए।


1

गतिविधि टैग के तहत मेनिफेस्ट फ़ाइल में चित्र के लिए स्क्रीन अभिविन्यास सेट करें।



0

गतिविधि टैग के तहत मेनिफेस्ट फ़ाइल में चित्र के लिए स्क्रीन अभिविन्यास सेट करें।

यहाँ उदाहरण है

आपको हर गतिविधि में प्रवेश करना होगा

गतिविधि में निम्नलिखित पंक्तियाँ जोड़ें

चित्र के लिए

android:screenOrientation="portrait"
tools:ignore="LockedOrientationActivity"

परिदृश्य के लिए

android:screenOrientation="landscape"
tools:ignore="LockedOrientationActivity"

यहाँ मुख्यता का उदाहरण है

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="org.thcb.app">
 
    <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"
            tools:ignore="LockedOrientationActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

</manifest>


-1

बस जोड़ दो:

android:screenOrientation="portrait"

" AndroidManifest.xml " में:

<activity
android:screenOrientation="portrait"
android:name=".MainActivity"
android:label="@string/app_name">
</activity>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.