AndroidManifest.xml ( लिंक ) को देखते हुए , लाइन 9 पर:
<activity android:screenOrientation="landscape" android:configChanges="orientation|keyboardHidden" android:name="VncCanvasActivity">
यह पंक्ति screenOrientation
परिदृश्य को निर्दिष्ट करती है , लेकिन लेखक किसी भी स्क्रीन ओरिएंटेशन परिवर्तनों को ओवरराइड करने में आगे जाता है configChanges="orientation|keyboardHidden"
। यह VncCanvasActivity.java में एक ओवरराइड फ़ंक्शन को इंगित करता है।
यदि आप VncCanvasActivity को देखते हैं, तो लाइन 109 अतिव्यापी कार्य है:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// ignore orientation/keyboard change
super.onConfigurationChanged(newConfig);
}
लेखक ने विशेष रूप से किसी भी कीबोर्ड या ओरिएंटेशन परिवर्तनों को अनदेखा करने के लिए एक टिप्पणी रखी।
यदि आप इसे बदलना चाहते हैं, तो आप ऊपर दिखाए गए AndroidManifest.xml फ़ाइल पर वापस जा सकते हैं, और लाइन को इसमें बदल सकते हैं:
<activity android:screenOrientation="sensor" android:name="VncCanvasActivity">
उपयोगकर्ता द्वारा डिवाइस को घुमाए जाने पर यह पोर्ट्रेट से परिदृश्य में स्विच करने के लिए प्रोग्राम को बदलना चाहिए।
यह काम कर सकता है, लेकिन गड़बड़ी कैसे दिखती है, यह इस बात पर निर्भर करता है कि लेआउट कैसे बनाया गया था। उसके लिए आपको हिसाब देना पड़ेगा। इसके अलावा, गतिविधियों को कैसे कोडित किया जाता है, इस पर निर्भर करते हुए, आप देख सकते हैं कि जब स्क्रीन ओरिएंटेशन बदला जाता है, तो जो मान किसी इनपुट बॉक्स में भरे गए थे वे गायब हो जाते हैं। यह भी संभालना पड़ सकता है।
configChanges
विशेषता की आवश्यकता क्यों है ? यह मेरे गैर-कीबोर्ड फोन पर इसके बिना काम करने लगता है ... किन स्थितियों में अभिविन्यास बदल जाएगा यदि आपके पास हैscreenOrientation="landscape"
लेकिन छोड़ देंconfigChanges
?