2010-07-14 25 views
6

क्या संपूर्ण गतिविधि को नष्ट किए बिना लैंडस्केप मोड के लिए इसके संबंधित ड्रॉबल के साथ ImageView को खींचने का कोई तरीका है। मैंने दोबारा कॉन्फ़िगरेशन में फिर से ड्रॉइंग सेट करने की कोशिश की, कॉलबैक बदल दिया लेकिन यह काम नहीं करता है। इसकॉन्फ़िगरेशन पर छवि बदलें चेंज

@Override 
public void onConfigurationChanged(Configuration conf) { 
    super.onConfigurationChanged(conf); 
    mImageView.setImageDrawable(getResources().getDrawable(R.drawable.iv)); 
} 

जब मैं लैंडस्केप मोड में गतिविधि स्टार drawable दूर करने के लिए की तरह कुछ तो संसाधनों को सही ढंग से स्थित हैं प्रदर्शित होता है।

उत्तर

6

अपने नमूना परियोजना में सिर्फ

iv.setImageDrawable(getResources().getDrawable(R.drawable.android)); 

साथ

iv.setBackgroundResource(R.drawable.android); 

की जगह मैं क्योंकि एक ही संसाधन पहले imageView को सौंपा गया है setBackgroundResource कुछ नहीं करता है लगता है।

इस
http://open-pim.com/tmp/ImageTest.zip
मैं अपने दृष्टिकोण की कोशिश की पर एक नजर डालें और यह मेरे लिए सिर्फ अच्छा काम करता है।

+0

उत्तर के लिए हाय धन्यवाद लेकिन यह अभी भी मेरे लिए काम नहीं कर रहा है। मुझे लगता है कि आप एंड्रॉइड घोषित करना भूल गए हैं: configChanges = "नेविगेशन | ओरिएंटेशन" आपके मैनिफेस्ट में और गतिविधि को फिर से बनाया गया है। यहां मेरा कोड है (Google डॉक्स से लिंक) https://docs.google.com/uc?id=0B6e5v3bLSI3ZYTQyYTRhYTctMDE4MS00M2QzLTk1Y2EtYWU3NmZmZmJiN2Zl&export=download&hl=hi। जब आप गतिविधि शुरू करते हैं तो लैंडस्केप मोड होता है या कॉन्फ़िगरेशन हटाता है मैनिफेस्ट से बदलें सब कुछ ठीक है, इसलिए संसाधन स्थित हैं और सही तरीके से लोड हो गए हैं। –

+0

एंड्रॉइड: configChanges वहां है, कॉन्फ़िगरेशन चेंज किया जाता है। कृपया सुनिश्चित करने के लिए मेरे नमूने का प्रयास करें। मैंने लिंक अपडेट किया, यह गलत था। – Fedor

+0

सेटबैकग्राउंड रिसोर्स एक और संभावित मुद्दा – Fedor

0

वहाँ पूरी गतिविधि को नष्ट किए बिना उससे संबंधित लैंडस्केप मोड के लिए drawable साथ imageView drawable बदलने के लिए एक रास्ता है।

जब आप पोर्ट्रेट से परिदृश्य में बदलते हैं या इसके विपरीत गतिविधि को फिर से बनाया जाता है। जांचें कि onCreate() विधि कहा जाता है।

आप व्यवहार उपयोग इस तरह से बचना चाहते हैं: AndroidManifest में अपने Activity के लिए

android:configChanges="orientation|keyboardHidden" 

-

अपने प्रश्न के संबंध में: मैं पहली बार की जाँच करेगा कि क्या यह एक ऑरिएंटेशन बदलने पहले कहा जाता है: onConfigurationChanged या onCreate

तो onConfigurationChanged पहले कहा जाता है, तो अपने onCreate() विधि में अपने setContentView() अपने ImageView drawable की जगह है।

+0

जैसा कि मैंने पोस्ट किया है, मैं कॉन्फ़िगरेशन के बाद गतिविधि को फिर से बनाना नहीं चाहता हूं। हां मैंने एंड्रॉइड का उपयोग किया: configChanges = "ओरिएंटेशन | कीबोर्ड हाइडेड" मैनिफेस्ट फ़ाइल में, इसलिए मेरी गतिविधि केवल एक बार बनाई जाती है और फिर प्रत्येक कॉन्फ़िगरेशन चेंज पर परिवर्तन के साथ परिवर्तन किया जाता है। गतिविधि को पुन: प्रयास किए बिना चेंज किया जाता है और मेरा लक्ष्य कुछ छविव्यू को आकर्षित करने योग्य ड्रॉबल के साथ बदलना है रेस/drawable भूमि। –

+0

ओपी अपने कोड (एप रीवेटेट से बचने के लिए) द्वारा अभिविन्यास परिवर्तन को संभालना चाहता है, और उसे लैंडस्केप ओरिएंटेशन के लिए संसाधनों तक पहुंच की आवश्यकता है। – Pentium10

+0

@Mojo Risin: ओह, ठीक है। तो 'ऑन कॉन्फिगरेशन चेंजेड' कहा जाता है हालांकि आपने इसे अपने मैनिफेस्ट में सेट किया है? – Macarse

0

एमुलेटर के लिए, आपको विधि कॉल करने के लिए अभिविन्यास के अतिरिक्त स्क्रीनलेआउट की आवश्यकता होगी।

android:configChanges="orientation|screenLayout" 
संबंधित मुद्दे