मेरे पास एक लोगो दृश्य है, जो एक पूर्ण स्क्रीन खंड है जिसमें एकल ImageView
है। लोगो छवि पूरी तरह से दिखाई देने के बाद मुझे कुछ ऑपरेशन करना है।ऑन ग्लोबललायआउट विभिन्न आमंत्रणों के बीच अंतर
के बाद कोड विशेष कार्य
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ImageView logoImageMaster = new ImageView(getContext());
//logoImageMaster.setImageResource(resID); //even after removing this, i am getting the callback twice
try {
// get input stream
InputStream ims = getActivity().getAssets().open("product_logo.png");
// load image as Drawable
Drawable d = Drawable.createFromStream(ims, null);
// set image to ImageView
logoImageMaster.setImageDrawable(d);
}
catch(IOException ex) {
}
logoImageMaster.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() { //FIXME get called twice. Check this out, no info to distinguish first from second
// Log.e("PANEL", "onGlobalLayout of Logo IV ---------------------------------");
activityInterface.doSpecialLogic();
}
});
return logoImageMaster;
}
मेरे सटीक समस्या है, onGlobalLayout
इस दृश्य पदानुक्रम के लिए दो बार कहा जाता है आह्वान किया जाता है।
मुझे पता है कि onGlobalLayout
View.java
के performTraversal
में शामिल किया गया है, इसलिए इसकी उम्मीद है।
एकल बच्चे के दृश्य के साथ एकल माता-पिता के मेरे उपयोग के मामले के लिए, मैं दृश्य छवियों को अलग करना चाहता हूं जैसे कि doSpecialLogic
को एक बार [onGlobalLayout
दो बार कहा जाता है], लोगो छवि पूरी तरह से दिखाई देने के बाद। कृपया कुछ विचार सुझाएं।
हाय, मुझे अभी भी दो बार मिल गया है, अब मैं केवल एक बार सेट करता हूं, कृपया – nmxprime
प्रश्न के अपडेट देखें, मैं 'doSpecialLogic' – nmxprime
में दृश्य को रीसेट नहीं कर रहा हूं, GlobalLayout = "कॉलबैक विधि पर दस्तावेज़ों के अनुसार जब वैश्विक लेआउट स्थिति या दृश्य वृक्ष के भीतर विचारों की दृश्यता में परिवर्तन होता है तो " बदलता है, इसलिए विचारों को फिर से लोड करना होगा जो ऑन ग्लोबललायआउट को दो बार कॉल करता है। –