मैंने अभिविन्यास मूल्य प्राप्त करने के लिए getOrientation()
को आजमाया लेकिन यह हमेशा 0 देता है!एंड्रॉइड स्क्रीन अभिविन्यास
उत्तर
getOrientation()
बहिष्कृत किया गया है। इसके बजाय, getRotation()
आज़माएं।
कोई विचार क्यों मिलता है ऑरिएन्टेशन को बहिष्कृत किया जाता है? जहां तक मैं कह सकता हूं, getRotation एक ही चीज़ करता है। –
यदि आपको एपीआई 7 का समर्थन करना होगा, तो आप 'getRotation' का उपयोग नहीं कर सकते हैं, यह एपीआई 8 आगे है। – mxcl
आप यदि सामग्री वर्तमान में प्रदर्शित लैंडस्केप मोड या चित्र (संभवतः पूरी तरह से फोन की शारीरिक रोटेशन की स्वतंत्र) में है जानना चाहते हैं आप का उपयोग कर सकते हैं:
getResources().getConfiguration().orientation
सार्वजनिक int अभिविन्यास
चूंकि: API स्तर 1
स्क्रीन के कुल मिलाकर अभिविन्यास। ORIENTATION_LANDSCAPE, ORIENTATION_PORTRAIT, या ORIENTATION_SQUARE में से एक हो सकता है।
अच्छा समाधान जब आपको पुराने ओएस संस्करणों का समर्थन करने की आवश्यकता होती है। लगता है कि 'getOrientation() 'से अधिक विश्वसनीय होना प्रतीत होता है। – azdev
अभी तक, यह एकमात्र समाधान है जिसने मेरे लिए ठीक से काम किया है! –
ऐसा लगता है जैसे getOrientation() हमेशा ORIENTATION_UNDEFINED लौटाता है अगर मैंने गतिविधि लोड करने के बाद स्क्रीन को घुमाया नहीं था। इस तरह से उस समस्या से बचा जाता है। – Keith
getOrientation() को बहिष्कृत किया गया है लेकिन यह आपकी समस्या की जड़ नहीं है। यह सच है कि आपको getRotation()के बजाय getOrientation() का उपयोग करना चाहिए, लेकिन यदि आप एंड्रॉइड 2.2 (एपीआई लेवल 8) या उच्चतर को लक्षित कर रहे हैं तो आप इसका उपयोग केवल तभी कर सकते हैं। कुछ लोग और यहां तक कि Googlers कभी-कभी भूल जाते हैं।
उदाहरण के तौर पर, मेरी एचटीसी इच्छा पर एंड्रॉइड 2.2 चल रहा है।
- 0 (डिफ़ॉल्ट, चित्र),
- 1 (डिवाइस 90 डिग्री वामावर्त),
- 3 (डिवाइस 90 डिग्री दक्षिणावर्त: getOrientation() और getRotation() दोनों एक ही मान रिपोर्ट)
यह रिपोर्ट नहीं करता है जब आप इसे "अपने सिर पर" डालते हैं (180 घुमाएं, यह मान 2 होगा)। यह परिणाम संभवतः डिवाइस-विशिष्ट है।
यदि आप एक एमुलेटर या डिवाइस का उपयोग करते हैं तो सबसे पहले आपको स्पष्ट करना चाहिए। क्या आप जानते हैं कि एमुलेटर को घुमाने के लिए कैसे?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
WindowManager mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Display mDisplay = mWindowManager.getDefaultDisplay();
Log.d("ORIENTATION_TEST", "getOrientation(): " + mDisplay.getOrientation());
}
चेक अपने आपके डिवाइस की स्क्रीन उपकरण सेटिंग में बंद कर दिया गया है, तोसेटिंग> प्रदर्शन> ऑटो: तो फिर मैं इस तरह एक OnCreate() विधि के साथ एक छोटे से परीक्षण कार्यक्रम बनाने के लिए सिफारिश करेंगे स्क्रीन घुमाएं। यदि वह चेकबॉक्स अनचेक किया गया है, तो एंड्रॉइड आपकी गतिविधि में अभिविन्यास परिवर्तन की रिपोर्ट नहीं करेगा। स्पष्ट होने के लिए: यह गतिविधि को पुनरारंभ नहीं करेगा। मेरे मामले में मुझे केवल मिलता है, जैसा आपने वर्णन किया है।
आप अपने कार्यक्रम से जाँच कर सकते हैं अगर आप onCreate()
int sysAutoRotate = 0;
try {
sysAutoRotate = Settings.System.getInt(getContentResolver(), Settings.System.ACCELEROMETER_ROTATION);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Log.d("ORIENTATION_TEST", "Auto-rotate Screen from Device Settings:" + sysAutoRotate);
ये पंक्तियां जोड़ें यह वापस आ जाएगी अगर आप घुमाएं बंद और है अगर आप घुमाएं है पर। एक और प्रयास करें।आपके मूल कार्यक्रम में आप प्रकट हो सकते हैं
android:screenOrientation="portrait"
समान प्रभाव, लेकिन इस बार केवल आपकी गतिविधि के लिए। यदि आपने छोटा परीक्षण कार्यक्रम बनाया है तो यह संभावना समाप्त हो गई होगी (यही कारण है कि मैं इसकी अनुशंसा करता हूं)।
टिप्पणी: हां संपूर्ण अभिविन्यास/रोटेशन विषय वास्तव में एक "दिलचस्प" विषय है। चीजों को आज़माएं, Log.d(), प्रयोग, सीखें।
केवल 26 वोट? यह वास्तव में उपयोगी है! – Sonhja
मुझे NexusOne SDK 2.3 पर एक ही समस्या थी।
यह हल किया गया: Check orientation on Android phone।
/* First, get the Display from the WindowManager */
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
/* Now we can retrieve all display-related infos */
int width = display.getWidth();
int height = display.getHeight();
int orientation = display.getOrientation();
मुझे लगता है कि आपको दो अलग-अलग लेआउट बनाने और विभिन्न अभिविन्यास पर विभिन्न लेआउट को बढ़ाने की आवश्यकता है। मैं आपको एक नमूना कोड दे रहा हूं जो मेरे लिए ठीक काम कर रहा है। "संदर्भ" कस्टम एडाप्टर के मामले में आप अपनी गतिविधि से गुजर सकते हैं। आप कस्टम एडाप्टर का उपयोग कर रहे हैं तो आप इस कोड की कोशिश कर सकते हैं:
@Override
public View getView(final int position,
View convertView,
ViewGroup parent)
{
View rowView = convertView;
ViewHolder holder = null;
int i = context.getResources().getConfiguration().orientation;
if (rowView == null) {
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (i == Configuration.ORIENTATION_PORTRAIT) {
rowView = inflater.inflate(R.layout.protrait_layout, null, false);
} else {
rowView = inflater.inflate(R.layout.landscape_layout, null, false);
}
holder = new ViewHolder();
holder.button = (Button) rowView.findViewById(R.id.button1);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
return rowView;
}
अन्य बुद्धिमान आप सीधे अपने कोड में दो अलग-अलग लेआउट सेट
int i = context.getResources().getConfiguration().orientation;
if (i == Configuration.ORIENTATION_PORTRAIT) {
ArrayAdapter<String> adt = new ArrayAdapter<String>(getApplicationContext(), R.layout.protrait_layout, name);
} else {
ArrayAdapter<String> adt = new ArrayAdapter<String>(getApplicationContext(), R.layout.landscape_layout, name);
}
पदावनत तरीकों के उपयोग से बचने के उपयोग करने के लिए एंड्रॉयड विन्यास कर सकते हैं कक्षा here मिली। यह एपीआई lvl 1 के बाद से काम करता है और अभी भी नवीनतम एंड्रॉइड उपकरणों पर काम करता है। (बहिष्कृत नहीं)।
Configuration config = getResources().getConfiguration();
if (config.orientation == Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.portraitStart);
}
else
{
setContentView(R.layout.landscapeStart);
}
luck- आशा की बेस्ट इस जवाब जो कोई भी इसे में चलाता है मदद करता है:
के रूप में और उदाहरण निम्नलिखित कोड का टुकड़ा पर विचार करें।
आप मैन्युअल रूप से कोड के माध्यम से क्यों स्विच करेंगे? लेआउट विन्यास इसके लिए हैं।/res/लेआउट और/res/लेआउट-भूमि। – afollestad
आप उपयोग करना चाहिए:
getResources().getConfiguration().orientation
यह ORIENTATION_LANDSCAPE
में से एक, ORIENTATION_PORTRAIT
हो सकता है।
http://developer.android.com/reference/android/content/res/Configuration.html#orientation
आप लैंडस्केप बाएं/दाएं जैसे विस्तृत विवरण प्राप्त कैसे करते हैं? – Mark13426
- 1. एंड्रॉइड स्क्रीन अभिविन्यास हैंडलिंग समस्या
- 2. एंड्रॉइड 3.0 के बाद अन्य स्क्रीन अभिविन्यास
- 3. एंड्रॉयड स्क्रीन अभिविन्यास सेंसर
- 4. स्क्रीन अभिविन्यास लॉक (Android)
- 5. एंड्रॉइड: अभिविन्यास = "लंबवत" TabWidget
- 6. नेविगेशन टैब के साथ एक्शनबार स्क्रीन अभिविन्यास
- 7. एंड्रॉइड के बीच अंतर: अभिविन्यास = "लंबवत" बनाम एंड्रॉइड: अभिविन्यास = "क्षैतिज"
- 8. एंड्रॉइड कैमरा पोर्ट्रेट अभिविन्यास
- 9. एंड्रॉइड 2.3 एम्यूलेटर अभिविन्यास
- 10. एंड्रॉइड - फ्रैगमेंट स्क्रीन घुमाएं
- 11. एंड्रॉइड मल्टी-स्क्रीन क्वालीफायर परिभाषा
- 12. एंड्रॉइड: कुशल स्क्रीन रोटेशन हैंडलिंग
- 13. एंड्रॉइड - फोटो का अभिविन्यास कैमरा
- 14. एंड्रॉइड में कैमरा/चित्र अभिविन्यास
- 15. एटीडी स्क्रीन अभिविन्यास CTRL + F11 या CTRL + F12
- 16. अभिविन्यास परिवर्तन
- 17. एंड्रॉइड: स्क्रीन पर स्क्रीन रिसीवर
- 18. स्क्रीन ओरिएंटेशन बदलें - वर्चुअलबॉक्स पर एंड्रॉइड 3.2
- 19. एंड्रॉइड फोन अभिविन्यास मानव अभिविन्यास से मेल खाता कैसे प्राप्त करें?
- 20. फोर्स फोनगैप (एंड्रॉइड) स्पलैश स्क्रीन ओरिएंटेशन
- 21. डिवाइस के अभिविन्यास के बजाय स्क्रीन के अभिविन्यास को निर्धारित करना
- 22. मैं फ़ोन के लिए स्क्रीन अभिविन्यास कैसे लॉक करूं, लेकिन टैबलेट के लिए नहीं? (एंड्रॉइड)
- 23. एंड्रॉइड में लैंडस्केप स्क्रीन अभिविन्यास कैसे प्रतिबंधित किया जा सकता है?
- 24. एंड्रॉइड - केवल 1 पेज के लिए स्क्रीन अभिविन्यास फिक्स करें (फोनगैप)
- 25. मैं वर्तमान स्क्रीन अभिविन्यास कैसे प्राप्त कर सकता हूं?
- 26. यूआरएल से आकार छवि - आकार और स्क्रीन अभिविन्यास समस्याओं
- 27. एक्शनबार में टैब के साथ टुकड़े हैंडलिंग स्क्रीन अभिविन्यास
- 28. एंड्रॉइड - स्क्रीन समर्थन अक्षम करें बड़ी स्क्रीन
- 29. अभिविन्यास
- 30. क्षैतिज अभिविन्यास
डिवाइस को पहले घूर्णन करने का प्रयास करें। – noelicus
प्रश्न के रूप में तीसरे पक्ष के शीर्षक को वापस रोल किया गया (और इससे भी ज्यादा इसका जवाब है) विशेष रूप से एक विधि के बजाय सामान्य समस्या के रूप में चिंता अभिविन्यास। –