मैं एक गेम बना रहा हूं और मैं उसे एक सरल "स्कोर" प्रदर्शित करना चाहता हूं-खिलाड़ी को श्रेय दिया जाता है जब उसे श्रेय दिया जाता है।एनीमेशन समाप्त होने पर दृश्य को कैसे निकालें?
public class Score extends FrameLayout {
public Score(Context context, int score) {
super(context);
TextView txt = new TextView(context);
txt.setText(String.valueOf(score).toUpperCase());
addView(txt);
Animation anim = AnimationUtils.loadAnimation(context, R.anim.score);
startAnimation(anim);
anim.setAnimationListener(animationListener);
}
private void Remove(){
ViewGroup parent = (ViewGroup)getParent();
parent.removeView(this);
}
private AnimationListener animationListener = new AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
Remove();
}
};
}
इस कोड को वास्तव में जब तक किसी भी समय स्क्रीन पर केवल एक स्कोर एनीमेशन है के रूप में बहुत अच्छी तरह से काम करता है: यह दृश्य मैं स्क्रीन पर फेंक है। यदि खिलाड़ी स्कोर को हटा देता है, तो आखिरी स्कोर हटा दिए जाने से पहले, ऐप क्रैश हो जाता है - शायद क्योंकि दूसरा स्कोर एनीमेशन के दौरान खुद को हटाने के लिए ईवेंट प्राप्त करता है .. क्या यह एनीमेशन का उपयोग करने का एक बुरा अभ्यास है? आप लोग इसे कैसे संभालेंगे?
'runOnUiThread' हल जरूरी नहीं है। एक दृश्य में एक पोस्ट करने से ui धागे में चलने योग्य रन बन जाएगा। – Macarse
धन्यवाद, मैं इस त्रुटि में भाग गया और दृश्य में पोस्ट करने से मुझे विचारों को हटाने की अनुमति मिली। यह _weird_ है कि एक एनीमेशन श्रोता ui धागे में नहीं चल रहा है ... –
मुझे लगता है कि यह पहले से ही ui धागे पर चल रहा है। एक संभावित कारण है कि पोस्ट() काम करता है (यह सिर्फ एक अनुमान है) यह है कि यदि आप सीधे एनीमेशन श्रोता विधियों में दृश्य को हटाते हैं, तो उन्हें ड्रॉ लॉजिक निष्पादन से पहले बुलाया जाएगा और आप एनपीई का सामना करेंगे। उदाहरण के लिए प्रत्येक दृश्य में ड्राइंग से पहले इसका एनिम स्टेट अपडेट हो सकता है, और यदि एनिम समाप्त हो जाता है तो आपके श्रोता विधियों को कॉल किया जाता है। जब आप एक रननेबल पोस्ट करते हैं तो उसे लूपर द्वारा कतारबद्ध किया जाएगा जो इस फ्रेम के लिए दृश्य पदानुक्रम अपडेट/ड्रा लॉजिक समाप्त होने के बाद तक किसी भी संदेश को संसाधित नहीं करेगा। सब ui धागा हो सकता है – Dori