documentation for the Android manifest में, वहाँ screenOrientation
निर्दिष्ट करने के लिए कई अलग अलग तरीके हैं मैं userLandscape
कैसे निर्दिष्ट कर सकता हूं, लेकिन एंड्रॉइड के पुराने संस्करणों पर, इसेपर फ़ॉलबैक करें, और यहां तक कि पुराने संस्करणों पर भी landscape
पर आते हैं? मैं दस्तावेज में ऐसा करने के लिए नहीं मिला।प्रकट फ़ॉलबैक
उत्तर
मुझे नहीं लगता कि मैनिफेस्ट में फ़ॉलबैक तंत्र को लागू करने का एक तरीका है।
मैं सुझाव दूंगा कि आप मेनिफेस्ट में {उपयोगकर्ता लैंडस्केप, सेंसर लैंडस्केप, लैंडस्केप} में से एक निर्दिष्ट करें। फिर, रनटाइम पर संस्करण की जांच करें और सुधार करें।
कहें, आप मेनिफेस्ट में android:screenOrientation="userLandscape"
के साथ जाने का निर्णय लेते हैं।
में अपनी गतिविधि के onCreate(Bundle)
, सामग्री सेट करने से पहले:
int sdkInt = Build.VERSION.SDK_INT;
// if we're running on some API level within [9, 18), use `sensorLandscape`
if (sdkInt >= Build.VERSION_CODES.GINGERBREAD /* 9 */
&& sdkInt < Build.VERSION_CODES.JELLY_BEAN_MR2 /* 18 */) {
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (sdkInt < Build.VERSION_CODES.GINGERBREAD /* 9 */) {
setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
// API 18 or above - handled in manifest
setContentView(R.layout.whatever);
आशा है कि किसी को इस से एक बेहतर समाधान के साथ आता है। यह क्रूर बल लगता है।
संपादित करें:
एक अलग दृष्टिकोण की कोशिश की - जो मैं जानता हूँ से (और मैं गलत यहाँ हो सकता है), enums ऐसे userLandscape
के रूप में, sensorLandscape
आदि मूल्यों को बदल नहीं होंगे। के रूप में वे वर्तमान में खड़े:
<attr name="screenOrientation">
<enum name="unspecified" value="-1" />
<enum name="landscape" value="0" />
<enum name="portrait" value="1" />
<enum name="user" value="2" />
<enum name="behind" value="3" />
<enum name="sensor" value="4" />
<enum name="nosensor" value="5" />
<enum name="sensorLandscape" value="6" />
<enum name="sensorPortrait" value="7" />
<enum name="reverseLandscape" value="8" />
<enum name="reversePortrait" value="9" />
<enum name="fullSensor" value="10" />
<enum name="userLandscape" value="11" />
<enum name="userPortrait" value="12" />
<enum name="fullUser" value="13" />
<enum name="locked" value="14" />
</attr>
तो, परिभाषित करने के लिए यदि आप थे एक integer
जैसे:
<!-- `0` for `landscape` -- defined in values/integers.xml -->
<integer name="customScreenOrientation">0</integer>
<!-- `6` for `sensorLandscape` -- defined in values-v9/integers.xml -->
<integer name="customScreenOrientation">6</integer>
<!-- `11` for `userLandscape` -- defined in values-v18/integers.xml -->
<integer name="customScreenOrientation">11</integer>
फिर आप @integer/customScreenOrientation
अपनी गतिविधि के टैग में android:screenOrientation
के लिए मूल्य के रूप में इस्तेमाल कर सकते हैं।
सबसे अच्छा यह हैक कहने की जरूरत नहीं है। अगर कोई screenOrientation
के लिए एनम मानों की स्थिर स्थिति की पुष्टि कर सकता है, तो यह एक व्यवहार्य कामकाज हो सकता है - कई गतिविधियों में मेरे पिछले सुझाव से कोड शामिल करना बेहतर है।
फिर भी एक और संपादित करें:
दूसरा दृष्टिकोण कि मैंने पहले बताया पर सुधार किया जा सकता है:
इसके बजाय कईintegers.xml
फ़ाइलों के
, 3 styles.xml
फ़ाइलों को बनाने के। मुझे लगता है कि आपके पास पहले से ही एक है - values/styles.xml
। values-v9/styles.xml
& values-v18/styles.xml
बनाएं।
<!-- values/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">landscape</item>
</style>
<!-- values-v9/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">sensorLandscape</item>
</style>
<!-- values-v18/styles.xml -->
<style name="AppTheme" parent="@style/BaseTheme">
<item name="android:screenOrientation">userLandscape</item>
</style>
इस के बाद, values/integers.xml
(एक फ़ाइल) बना सकते हैं और एक पूर्णांक customScreenOrientation
को परिभाषित: से अधिक इस दृष्टिकोण का लाभ
<activity
....
android:theme="@style/AppTheme"
android:screenOrientation="@integer/customScreenOrientation"/>
:
<integer name="customScreenOrientation">?android:attr/screenOrientation</integer>
आप गतिविधि टैग की तरह दिखाई देगा दूसरा यह है कि हम कठोर कोडित मूल्यों के स्थान पर enums का उपयोग करने के लिए मिलता है। फिर, इन दो दृष्टिकोण समकक्ष हैं यदि पत्थर में enum-values सेट हैं। यदि वे बदलते हैं, तो दूसरा दृष्टिकोण असफल हो जाएगा जबकि तीसरा एक चल रहा है।
- 1. सर्वर-साइड फ़ॉलबैक प्रतिपादन
- 2. फ़ॉलबैक ओपन फ़ाइल पर्ल
- 3. दीप लिंक फ़ॉलबैक
- 4. वेबपैक। थॉमिंग फ़ॉलबैक
- 5. @HystrixCommand फ़ॉलबैक विधि
- 6. Emacs कुंजी बाइंडिंग फ़ॉलबैक
- 7. सीएसएस: फ़ॉलबैक फ़ॉन्ट्स
- 8. मॉडर्निजर येप्नोप सीएसएस फ़ॉलबैक
- 9. एंड्रॉयड प्रकट
- 10. सिग्नलआर क्लाइंट डिफ़ॉल्ट फ़ॉलबैक परिवहन
- 11. jquery आइसोटोप के लिए फ़ॉलबैक?
- 12. प्रकट और BroadcastReceiver
- 13. अजाक्स कॉल प्रकट v2
- 14. कठपुतली प्रकट - 'सूडो' आदेश?
- 15. कॉर्डोबा प्रकट विलय
- 16. प्रकट जब डीबग मोड
- 17. Backbone.js पुशस्टेट्स: इंटरनेट एक्सप्लोरर के लिए फ़ॉलबैक
- 18. नहीं i32/f64 फ़ॉलबैक जब पॉव()
- 19. एंगुलरजेएस $ रूटप्रोवाइडर, डिफ़ॉल्ट लिंक नेविगेशन पर फ़ॉलबैक
- 20. GetResourceSet फ़ॉलबैक मान लोड नहीं करता
- 21. FontAwesome से फ़ॉलबैक अगर फ़ॉन्ट डाउनलोड अवरुद्ध
- 22. ट्विटर बूटस्ट्रैप मॉडल विंडो फ़ॉलबैक लिंक
- 23. फ़ॉलबैक छवि और टाइमआउट - बाहरी सामग्री। जावास्क्रिप्ट
- 24. कोर ऑब्जेक्ट स्ट्रिंगफिकेशन में फ़ॉलबैक कैसे करें?
- 25. हो रही पैकेज स्ट्रिंग प्रकट
- 26. JQuery "प्रकट होने पर" घटना
- 27. संसाधन प्रकट से संदर्भित विन्यास
- 28. बनाम गुण फ़ाइल स्वरूप प्रकट
- 29. अपाचे चींटी प्रकट वर्ग पथ?
- 30. एचटीएमएल 5 appcache प्रकट फाइल एक्सटेंशन
यह काम करता है। मुझे एक और अधिक सुरुचिपूर्ण समाधान देखने में दिलचस्पी होगी, लेकिन शायद कोई नहीं है। – Tenfour04
@ Tenfour04 मैं इसके साथ कुछ और खेल रहा था और एक और कामकाज पाया - यह मेरी राय में सुरुचिपूर्ण नहीं है, लेकिन कम कोड के साथ समाधान प्रदान करता है। – Vikram
@ Tenfour04 फ़ॉलबैक तंत्र को लागू करने का एक और (आखिरी उम्मीद है) जोड़ा गया। – Vikram