2011-11-18 31 views
14

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

सवाल सरल है, एंड्रॉइड टैबलेट के लिए इसे सक्रिय रखते हुए, मैं एंड्रॉइड फोन के लिए स्क्रीन अभिविन्यास को कैसे निष्क्रिय कर सकता हूं? मुझे पता है कि मैं इसे मैनिफेस्ट फ़ाइल में कर सकता हूं, हालांकि, यह मेरे द्वारा विश्वास किए जाने वाले टैबलेट के लिए अभिविन्यास को भी लॉक करेगा।

उत्तर

11

आप इसे एप्लिकेशन से भी कर सकते हैं।

Lock screen orientation (Android)
http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

और विशेषताओं यहां पाया जा सकता:

http://developer.android.com/reference/android/R.attr.html#screenOrientation


, पता लगाने के लिए अगर एंड्रॉयड डिवाइस टेबलेट या फ़ोन है, तो आप इस समाधान का उपयोग करना चाहिए (विभिन्न SO Q & ए), https://stackoverflow.com/a/9308284/492624

+1

क्यों इस उत्तर के रूप में मान्य सेट कर दिया जाता

अपनी गतिविधि में एक विधि बनाने? यह फोन और टैबलेट पर अलग-अलग व्यवहार को सेट करने का तरीका नहीं बताता है। –

2

ऐसा लगता है कि अगर आप इसे रनटाइम पर संभालने के लिए असंभव नहीं हैं, तो स्क्रीन आकार प्राप्त करके और फिर RunTimeConfigurationChanges बनाएं, तो यह आपकी मदद करेगा।

इस Handling Runtime Changes आज़माएं।

और मुझे पता है अगर आप उस पर सफलता मिलता है ..

धन्यवाद।

+0

मैं आपसे सहमत हूं लेकिन यह किया जा सकता है। ऐसा करने के लिए: 1. डिवाइस के स्क्रीन रिज़ॉल्यूशन प्राप्त करें। 2. गतिविधि में कॉन्फ़िगरेशन चेंज विधि पर ओवरराइड करें। –

1

एक विधि है, फोन संस्करण और टैबलेट संस्करण के लिए अलग-अलग गतिविधियां बनाएं। और फिर एंड्रॉइड मेनिफेस्ट फ़ाइल में अपनी ओरिएंटेशन को ठीक करें। एक अन्य विधि डिवाइस है कि वर्तमान में इस्तेमाल किया जा रहा की जाँच करें और गतिविधि अपने आप में उन्मुखीकरण को ठीक कोड का उपयोग करने के लिए,

 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

अलग-अलग गतिविधियां बनाना अपनी आसान के रूप में बेहतर तरीका टैब और फोन संस्करणों को बनाए रखना है।

10

सबसे पहले, इसे करने से रोकने का प्रयास करें। मैंने इसे चुनना चुना क्योंकि यह एक जटिल समस्या के लिए एक आसान फिक्स था। लेकिन वास्तव में, इसे करने से रोकने की कोशिश करें।

यदि आप वास्तव में इसे करना चाहते हैं, तो निम्न कोड का उपयोग करें।

private boolean isTablet() { 
     return (this.getResources().getConfiguration().screenLayout 
      & Configuration.SCREENLAYOUT_SIZE_MASK) 
      >= Configuration.SCREENLAYOUT_SIZE_LARGE; 
    } 

और फिर अपने onCreate में निम्नलिखित है::

if (!isTablet()) { 
     // stop screen rotation on phones because <explain> 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    }