रनटाइम के दौरान अभिविन्यास को लॉक करने का कोई तरीका है? उदाहरण के लिए, यदि उपयोगकर्ता वर्तमान में परिदृश्य में है और मेनू विकल्प टॉगल करता है तो उपयोगकर्ता स्क्रीन को लैंडस्केप पर लॉक करने की अनुमति देना चाहता हूं।रनटाइम के दौरान अभिविन्यास को कैसे लॉक करें
उत्तर
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
किसी गतिविधि पर कॉल किया गया, इसे परिदृश्य में लॉक कर देगा। ActivityInfo क्लास में अन्य झंडे की तलाश करें। आप इसे वापस पोर्ट्रेट पर लॉक कर सकते हैं या इसे सेंसर/स्लाइडर संचालित कर सकते हैं।
अधिक यहाँ जानकारी: http://www.devx.com/wireless/Article/40792
मैं था करने के लिए एक समान मामला है लग रहा था। मैं किसी भी अभिविन्यास का समर्थन करना चाहता था, लेकिन वर्कफ़्लो में एक निश्चित बिंदु के बाद मुझे वर्तमान अभिविन्यास में रहने की आवश्यकता थी। मेरे समाधान किया गया था:
संरक्षित कार्यप्रवाह के प्रवेश पर:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
संरक्षित कार्यप्रवाह का बाहर निकलें:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
बदल सकते हैं यह ओक्यू को कम से कम एंड्रॉइड पर नहीं संबोधित करता है> = 16. setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_NOSENSOR) डिवाइस को पोर्ट्रेट में होने पर भी परिदृश्य में सेट कर सकता है, जबकि प्रश्न दिया गया था जो अभिविन्यास को लॉक करने के लिए संदर्भित करता है। – greg7gkb
मेरे लिए, अगर मैं लैंडस्केप पर था, तो मुझे पोर्ट्रेट मोड पर वापस ले जाता है, मैंने इसके बजाय SCREEN_ORIENTATION_LOCKED का उपयोग किया और यह मेरे लिए काम किया – Jimmar
@JiMMaR SCREEN_ORIENTATION_LOCKED Android> = 18. के लिए सबसे अच्छा तरीका है। लेकिन यदि आप कुछ कम लक्षित करते हैं , वह काम नहीं करता। मैं नीचे jp36 के जवाब का उपयोग करने का सुझाव देते हैं। –
क्या रिटर्न getConfiguration के बीच अंतर से सावधान रहें और क्या setRequestedOrientation चाहता है - वे दोनों int हैं, लेकिन वे विभिन्न निरंतर परिभाषाओं से आ रहे हैं।
यहाँ वर्तमान अभिविन्यास लॉक करने का तरीका है, जबकि 180 डिग्री की इजाजत दी flips
int currentOrientation = getResources().getConfiguration().orientation;
if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
आप SCREEN_ORIENTATION_USER_LANDSCAPE का उपयोग करना पसंद कर सकते हैं क्योंकि यह सेटिंग में स्क्रीन रोटेशन अक्षम करने पर 180 डिग्री फ़्लिप की अनुमति नहीं देता है। इसी प्रकार जब फ्री रोटेशन पर वापस स्विच करते हैं, तो SCREEN_ORIENTATION_USER SCREEN_ORIENTATION_SENSOR से बेहतर है क्योंकि बाद में सेटिंग रोटेशन की अनुमति देती है, भले ही सेटिंग्स न कहें। –
शानदार! जब आप रिवर्स अभिविन्यास पुनर्गठन पर स्विच करते हैं तो यह जोड़ने की आवश्यकता नहीं होती है। कम से कम उपकरणों पर मैंने इसका परीक्षण किया है। यह जानना वाकई महत्वपूर्ण है कि क्या आप कुछ संवाद कार्यक्रमों के दौरान पुनर्गठन को रोकना चाहते हैं आदि – sberezin
यह रिवर्स चित्र के साथ उपकरणों पर काम करता है और परिदृश्य को उल्टा है।
लॉक उन्मुखीकरण:
int orientation = getActivity().getRequestedOrientation(); int rotation = ((WindowManager) getActivity().getSystemService( Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation(); switch (rotation) { case Surface.ROTATION_0: orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; break; case Surface.ROTATION_90: orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; break; case Surface.ROTATION_180: orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT; break; default: orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE; break; } getActivity().setRequestedOrientation(orientation);
अनलॉक उन्मुखीकरण:
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
रोटेशन प्राप्त करें '' स्क्रीन के घूर्णन को अपने "प्राकृतिक" अभिविन्यास से वापस करता है। "' [स्रोत] (http://developer.android.com/ संदर्भ/एंड्रॉयड/देखें/Display.html # getRotation())। तो एक फोन पर ROTATION_0 कह रहा है कि चित्र संभवतः सही है, लेकिन टैबलेट पर इसकी "प्राकृतिक" अभिविन्यास संभवतः परिदृश्य है और ROTATION_0 को चित्र के बजाय परिदृश्य लौटना चाहिए। – jp36
@ jp36, मैंने नेक्सस 7 पर परीक्षण किया जिसमें एक प्राकृतिक अभिविन्यास है जो एक फोन जैसा ही है। एक बड़े टैबलेट पर परीक्षण के लिए धन्यवाद (जो मेरे पास नहीं है)। – pstoppani
जैसा कि एमपी 3 ने कहा, यह प्राकृतिक परिदृश्य अभिविन्यास के साथ गोलियों पर काम नहीं करता है! – DominicM
वैकल्पिक टेबलेट के लिए समर्थन के साथ जवाब @pstoppani को (@pstoppani जवाब के साथ के रूप में, इस वसीयत केवल डिवाइस पर काम करें> 2.2)
-पर परीक्षणऔर Samsung Galaxy Tab 10.1
public static void lockOrientation(Activity activity) {
Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int rotation = display.getRotation();
int tempOrientation = activity.getResources().getConfiguration().orientation;
int orientation = 0;
switch(tempOrientation)
{
case Configuration.ORIENTATION_LANDSCAPE:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90)
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
break;
case Configuration.ORIENTATION_PORTRAIT:
if(rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_270)
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
else
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
activity.setRequestedOrientation(orientation);
}
यहाँ मेरी कोड है, तो आप इन तरीकों अपनी स्क्रीन से एक के साथ लॉक कर सकता है और एक बार कार्य समाप्त हो गया unlockOrientation साथ इसे अनलॉक:
/** Static methods related to device orientation. */
public class OrientationUtils {
private OrientationUtils() {}
/** Locks the device window in landscape mode. */
public static void lockOrientationLandscape(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
/** Locks the device window in portrait mode. */
public static void lockOrientationPortrait(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
/** Locks the device window in actual screen mode. */
public static void lockOrientation(Activity activity) {
final int orientation = activity.getResources().getConfiguration().orientation;
final int rotation = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
// Copied from Android docs, since we don't have these values in Froyo 2.2
int SCREEN_ORIENTATION_REVERSE_LANDSCAPE = 8;
int SCREEN_ORIENTATION_REVERSE_PORTRAIT = 9;
// Build.VERSION.SDK_INT <= Build.VERSION_CODES.FROYO
if (!BuildVersionUtils.hasGingerbread()) {
SCREEN_ORIENTATION_REVERSE_LANDSCAPE = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
SCREEN_ORIENTATION_REVERSE_PORTRAIT = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
}
if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90){
if (orientation == Configuration.ORIENTATION_PORTRAIT){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
else if (orientation == Configuration.ORIENTATION_LANDSCAPE){
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270)
{
if (orientation == Configuration.ORIENTATION_PORTRAIT){
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
else if (orientation == Configuration.ORIENTATION_LANDSCAPE){
activity.setRequestedOrientation(SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
}
}
}
/** Unlocks the device window in user defined screen mode. */
public static void unlockOrientation(Activity activity) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
यहाँ @pstoppani की Xamarin रूपांतरण है ऊपर का जवाब है।
नोट: यह एक टुकड़ा के लिए है, गतिविधि को प्रतिस्थापित करें।के साथ यह। यदि किसी गतिविधि के भीतर उपयोग किया जाता है।
public void LockRotation()
{
ScreenOrientation orientation;
var surfaceOrientation = Activity.WindowManager.DefaultDisplay.Rotation;
switch (surfaceOrientation) {
case SurfaceOrientation.Rotation0:
orientation = ScreenOrientation.Portrait;
break;
case SurfaceOrientation.Rotation90:
orientation = ScreenOrientation.Landscape;
break;
case SurfaceOrientation.Rotation180:
orientation = ScreenOrientation.ReversePortrait;
break;
default:
orientation = ScreenOrientation.ReverseLandscape;
break;
}
Activity.RequestedOrientation = orientation;
}
public void UnlockRotation()
{
Activity.RequestedOrientation = ScreenOrientation.Unspecified;
}
यह उपयोग किए जाने से पहले एक अलग दृष्टिकोण के साथ अनचाहे है, लेकिन इसका उपयोग किया जा सकता है।
यह पस्तोपानी के समान जवाब है, और यह एक टैबलेट पर असफल हो जाएगा। –
- 1. एंड्रॉइड में अभिविन्यास लॉक टॉगल कैसे करें?
- 2. ऐप के दौरान एंड्रॉइड अभिविन्यास को परिदृश्य के रूप में लॉक करें?
- 3. रनटाइम पर अभिविन्यास बदलें
- 4. स्क्रीन अभिविन्यास लॉक (Android)
- 5. आंशिक वेक लॉक के दौरान स्क्रीन को कैसे चालू करें
- 6. लैंडस्केप मोड को रोकने के लिए एंड्रॉइड में फोन अभिविन्यास को कैसे लॉक करें
- 7. किसी शब्दकोष से पढ़ने के दौरान लॉक क्यों करें
- 8. एक पंक्ति को कैसे लॉक करें
- 9. रनटाइम संकलन के दौरान संदिग्ध संदर्भ त्रुटि
- 10. फ़ाइल को लॉक करने और रीडिंग से बचने के दौरान
- 11. एप्लिकेशन अभिविन्यास (परिदृश्य या चित्र) लॉक कैसे किया जाता है?
- 12. MPMoviePlayer प्लेबैक के दौरान आईफोन ऑटो लॉक को कैसे सक्षम करें?
- 13. जेएमटर में रनटाइम के दौरान परिणाम फ़ाइल नाम कैसे बदलें?
- 14. सी # रनटाइम के दौरान सभी चर और वर्तमान मानों को कैसे डंप करें
- 15. पूर्ण अभिविन्यास कैसे निर्धारित करें
- 16. एंड्रॉइड वीडियो व्यू, अभिविन्यास परिवर्तन के दौरान निर्बाध प्लेबैक
- 17. छवि कैप्चर के दौरान फोनगैप रिटर्न वर्तमान अभिविन्यास
- 18. पंक्ति लॉक कैसे करें?
- 19. रनटाइम के दौरान साझा लाइब्रेरी के अंदर डिबगिंग/ट्रेसिंग?
- 20. अभिविन्यास अक्षम करें लेकिन अभिविन्यास का पता लगाएं
- 21. एएसपीनेट एमवीसी कार्रवाई को कैसे लॉक करें?
- 22. सबवर्सन लॉक त्रुटि को कैसे ठीक करें
- 23. मैवेन प्लगइन संस्करण को कैसे लॉक करें
- 24. मैं फ़ोन के लिए स्क्रीन अभिविन्यास कैसे लॉक करूं, लेकिन टैबलेट के लिए नहीं? (एंड्रॉइड)
- 25. web.config सेक्शन रनटाइम को कैसे संशोधित करें?
- 26. डब्ल्यूपीएफ अभिविन्यास
- 27. एंड्रॉइड में अभिविन्यास सेंसर को कैलिब्रेट करने के लिए कैसे?
- 28. iTextSharp के साथ अभिविन्यास बनाए रखने के दौरान मैं पीडीएफ पेज कैसे स्केल करूं?
- 29. एडीबी के माध्यम से एंड्रॉइड स्क्रीन को कैसे लॉक करें?
- 30. जावा में ग्रिडलाउट के पहलू अनुपात को कैसे लॉक करें?
ठीक है धन्यवाद। यह बहुत अच्छा काम करता है। जो वर्तमान अभिविन्यास प्राप्त करेगा। getResources()। प्राप्त कॉन्फ़िगरेशन()।अभिविन्यास – Jared
सावधान! आपको कॉन्फ़िगरेशन() रिटर्न और क्या सेटरक्वेटेड ऑरेंटेशन चाहता है के बीच अंतर करने की आवश्यकता है - विवरण के लिए नीचे मेरा उत्तर देखें –
इस दृष्टिकोण के साथ कोई समस्या है। सुनिश्चित करें कि आप [इस उत्तर] की टिप्पणी के माध्यम से जाएं (http://stackoverflow.com/a/3614089/1708390) –