2012-12-24 21 views
5

मैं एंड्रॉइड लाइव वॉलपेपर अनुप्रयोगों पर काम कर रहा हूं और स्क्रीन अभिविन्यास परिवर्तनों को सही ढंग से संभालने की आवश्यकता है।एंड्रॉइड स्क्रीन अभिविन्यास हैंडलिंग समस्या

वर्तमान में मैं इस उद्देश्य के लिए onConfigurationChanged का उपयोग करता हूं (इस विधि में मुझे अपने एलडब्लूपी स्क्रीन तत्वों के निर्देशांक बदलने की जरूरत है। मैं andengine का उपयोग करता हूं)। सब कुछ अनुकरणकर्ताओं और मेरे परीक्षण फोन पर ठीक काम करता है, लेकिन मेरे कुछ ग्राहक सैमसंग गैलेक्सी नोट 2 (टी03 जी), एलजी थ्रिल (एलजीई एलजी-पी 9 25) स्क्रीन उन्मुखता परिवर्तन के दौरान गलत एप्लिकेशन काम के मुद्दों के बारे में रिपोर्ट करता है।

मेरे पास ये फ़ोन नहीं हैं, लेकिन यह मान सकते हैं कि यह समस्या onConfigurationChanged से संबंधित नहीं है।

क्या onConfigurationChanged विधि का उपयोग करना सही है? शायद मुझे onSurfaceChanges या ऐसा कुछ उपयोग करने की आवश्यकता है? क्या आप कृपया इस मुद्दे को हल करने का सही तरीका सुझा सकते हैं?

<activity 
      android:name=".WallpaperSettings" 
      android:configChanges="keyboardHidden|orientation" 
      android:exported="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.PREFERENCE" /> 
      </intent-filter> 
     </activity> 
+0

http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange –

उत्तर

3

मेरे लाइव वॉलपेपर है, जो कि ओरिएंटेशन परिवर्तन हैंडल में, मैं उन्मुखीकरण परिवर्तन की जाँच करना onConfigurationChange() विधि का उपयोग करें, लेकिन मैं 2 फोन के साथ किसी भी प्रत्यक्ष अनुभव नहीं है, हालांकि मैं बारे में कोई शिकायत मिल गया कभी नहीं किया है उन्हें।

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
     if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     rotated = true; 
     } 
     else { 
     rotated = false; 
     } 
    } 

और draw() विधि में, मैं rotated बूलियन जाँच: मेरी विधि की तर्ज पर कुछ लग रहा है। अभिविन्यास बदलते समय संकल्प परिवर्तनों के लिए सही करने के लिए onSurfaceChanged() में अतिरिक्त चेक हैं।

मेरे पास मेरी मेनिफेस्ट फ़ाइल में android:configChanges="keyboardHidden|orientation" नहीं है।

2
android:configChanges="orientation|screenSize" 

सावधानी:: एंड्रॉयड 3.2 (एपीआई स्तर 13), "स्क्रीन आकार" भी परिवर्तन की शुरुआत के साथ जब डिवाइस स्विच

Alos, मैं अपने AndroidManifest.xml में android:configChanges="keyboardHidden|orientation" जोड़ लिया है चित्र और परिदृश्य के बीच अभिविन्यास। इस प्रकार, यदि आप एपीआई स्तर 13 या उच्चतर ( के रूप में minSdkVersion और targetSdkVersion विशेषताओं द्वारा घोषित किए गए) के रूप में अभिविन्यास परिवर्तन के कारण रनटाइम पुनरारंभ को रोकना चाहते हैं, तो आप में "अभिविन्यास" के अतिरिक्त "स्क्रीनसाइज़" मान शामिल करना होगा मूल्य। यही है, आपको एंड्रॉइड को डीकलेयर करना होगा: configChanges = "ओरिएंटेशन | स्क्रीन साइज"। हालांकि, यदि आपका एप्लिकेशन लक्ष्य API स्तर 12 या उससे कम है, तो आपकी गतिविधि हमेशा इस कॉन्फ़िगरेशन को स्वयं ही संभालती है (यह कॉन्फ़िगरेशन आपकी गतिविधि को पुनरारंभ नहीं करता है, भले ही एंड्रॉइड 3.2 या उच्च डिवाइस पर चल रहा हो)।

संबंधित मुद्दे