2011-03-24 18 views
23

मेरे पास एक गतिविधि है जो हमेशा लैंडस्केप मोड में प्रदर्शित की जानी चाहिए। तो मैंने android:screenOrientation="landscape" जोड़ा।एंड्रॉइड में स्क्रीन को लैंडस्केप मोड में कैसे रखा जाए

लेकिन समस्या तब होती है जब मैं 180 डिग्री द्वारा डिवाइस को घुमाता है, तो प्रदर्शन उलटा होता है। इस समस्या को संभालने का कोई तरीका है ताकि स्क्रीन तत्व हमेशा सही ढंग से दिखाए जा सकें।

+0

तो क्या आप इसे परिदृश्य या रिवर्स लैंडस्केप में रखना चाहते हैं? –

+0

@RobbyPond अभी मुझे एक समस्या का सामना करना पड़ रहा है जिसमें मैं चाहता हूं कि मेरा आवेदन परिदृश्य और रिवर्स लैंडस्केप भी हो। तो क्या होगा अगर मुझे दोनों मोड में आवश्यकता हो? –

उत्तर

7

तो बस सभी की जानकारी के लिए, मैंने यही किया।

  1. एंड्रॉइड मैनिफेस्ट में एंड्रॉइड जोड़ा गया: स्क्रीनऑरिएंटेशन = "लैंडस्केप"।
  2. में फिर से शुरू पद्धति पर कोड
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
int orientation = display.getRotation(); 

if(orientation==Surface.ROTATION_180) 
{ 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); 
} 

इस तरह अपनी स्क्रीन हमेशा सही ढंग से उपयोगकर्ता उल्टा डिवाइस रखती है, भले ही स्थिति में है की इन पंक्तियों में जोड़ें। नीचे दिए गए उदाहरण में तरह

android:configChanges="orientation" 
       android:screenOrientation="landscape" 

:

+0

यह मेरे लिए काम नहीं करता है, क्योंकि यह रोटेशन – Jacky

0

हम्म। यह आपके द्वारा उपयोग किए जा रहे ढांचे के संस्करण पर थोड़ा सा निर्भर करता है। इस अस्थिर को आजमाएं:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

यदि यह बढ़िया काम करता है। अगर आपको अपने ऐप के लेआउट के बारे में कुछ और बताना नहीं है।

+0

हां। मैंने वह किया। यहां मेरे ऑनस्यूम विधि डिस्प्ले डिस्प्ले = ((विंडोमैनेजर) सिस्टम सिस्टम (WINDOW_SERVICE) प्राप्त करें। getDefaultDisplay(); \t \t int अभिविन्यास = display.getRotation(); \t \t अगर ((उन्मुखीकरण == Surface.ROTATION_90) || (उन्मुखीकरण == Surface.ROTATION_270)) { \t \t \t setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); \t \t} else if (उन्मुखीकरण == Surface.ROTATION_180) { \t \t \t setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); – prashant

+1

कि सभी निष्पक्षता में काम करना चाहिए। बहुत बढ़िया! – Taranasus

2

एंड्रॉयड प्रकट में इस बारे में।

android:screenOrientation="sensorLandscape" 

अपने AndroidManifest.xml में:

<activity android:name=".MainActivity" 
       android:label="@string/app_name" 
       android:configChanges="orientation" 
       android:screenOrientation="portrait"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
55

वास्तव में क्या आप वास्तव में चाहते हैं निर्दिष्ट करने के लिए है। लैंडस्केप और रिवर्स लैंडस्केप के बीच स्नैप करते समय यह सेंसर डेटा सुनेंगे।

+0

+1 थेंक्स केसीबी के बाद फिर से शुरू नहीं करेगा, यह दोनों ओरिएंटेशन को लागू करने में केवल 1 मिनट लगते हैं। मेरे मूल्यवान समय को बचाने के लिए एक बार फिर सेक्स। –

+1

एफवाईआई, यह केवल टैबलेट के लिए काम करता है, मैंने इसका परीक्षण किया है, लेकिन यह हमेशा डिफ़ॉल्ट रूप से पोर्ट्रेट मोड में ऐप प्रदर्शित करता है यानी यह फोन में काम नहीं कर रहा है यानी –

+2

सेंसर लैंडस्केप को फियोयो (2.2) में जोड़ा गया था, इसलिए यह किसी भी डिवाइस पर काम करेगा या बाद में। – CaseyB

0

अच्छा विधि का उपयोग करने

setRequestedOrientation(6); 

6 sensorLandscape के लिए मूल्य है, लेकिन यह प्रतीत होता है कि कोई परिभाषित इसके लिए निरंतर है।

9

दूसरों sensorLandscape उल्लेख किया है ... अपनी गतिविधि में प्रोग्राम के रूप में यह करने के लिए (या एक आधार गतिविधि), आप उस के लिए अपने उन्मुखीकरण सेट कर सकते हैं:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 

मैं onResume() में यह कर रहा हूँ। का उपयोग किए बिना, गतिविधि के बीच में 180 डिग्री के आसपास डिवाइस को फ़्लिप करते समय यह परिदृश्य और रिवर्स लैंडस्केप का सम्मान करेगा।

यह मेरे लिए सहायक था क्योंकि टैबलेट के लिए मुझे केवल परिदृश्य/परिदृश्य की आवश्यकता होती है, और फोन के लिए मुझे केवल पोर्ट्रेट/पोर्ट्रेट रिवर्स की आवश्यकता होती है, और दो अलग एंड्रॉइडमैनीफाइल फाइल नहीं करना चाहती। ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT भी मौजूद है।

संबंधित मुद्दे