2011-11-07 27 views
6

मेरे पास बटन है, जिसे मैंने घूर्णन एनीमेशन का उपयोग करके 45 डिग्री घुमाया और एक संदेश को टोस्ट करने वाले क्लिक श्रोता पर लागू किया।ऑनक्लिक श्रोता ठीक से काम नहीं कर रहा है ..?

जब मैं बटन टोस्ट के ऊपरी 50% पर क्लिक करता हूं तो प्रदर्शित होता है। लेकिन जब मैं बटन के निचले 50% पर क्लिक करता हूं तो कुछ भी विचलित नहीं होता है।

यहां एनीमेशन कोड।

<?xml version="1.0" encoding="utf-8"?> 
<rotate 
xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromDegrees="45" 
    android:toDegrees="45" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:duration="0" android:fillAfter="true"> 
</rotate> 

df

अग्रिम धन्यवाद .....!

उत्तर

3

मुझे यकीन है कि यह एंड्रॉइड में एनीमेशन की एक सीमा है। उन्होंने एक नई एनीमेशन प्रणाली को लागू करके इसे 3.0 में तय किया।

यहां पढ़ें: http://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

"अंत में, पिछले एनिमेशन लक्ष्य वस्तुओं का दृश्य स्वरूप बदल ... लेकिन वे वास्तव में खुद वस्तुओं परिवर्तन नहीं किया आप इस समस्या में पड़ गया हो सकता चलो।। कहें कि आप स्क्रीन के एक तरफ से एक बटन को दूसरी तरफ ले जाना चाहते हैं। आप ऐसा करने के लिए अनुवाद एनीमेशन का उपयोग कर सकते हैं, और बटन स्क्रीन के दूसरी तरफ खुशी से ग्लाइड हो जाएगा। और जब एनीमेशन किया जाता है, तो यह होगा खुशी से अपने मूल स्थान पर वापस स्नैप करें। इसलिए आपको एनीमेशन पर setFillAfter (true) विधि मिलती है और इसे फिर से प्रयास करें। इस बार बटन उस स्थान पर रहता है जहां यह एनिमेटेड था। और आप इसे क्लिक करके सत्यापित कर सकते हैं - हे! बटन कैसे क्लिक नहीं कर रहा है? समस्या यह है कि एनीमेशन बदलता है जहां बटन खींचा जाता है, लेकिन जहां कंटेनर के भीतर बटन भौतिक रूप से मौजूद नहीं है। यदि आप बटन पर क्लिक करना चाहते हैं, तो आपको उस स्थान पर क्लिक करना होगा जिसमें वह रहने के लिए उपयोग किया जाता था। या, एक अधिक प्रभावी समाधान के रूप में (और केवल आपके उपयोगकर्ताओं के लिए एक और अधिक उपयोगी), आपको लिखना होगा एनीमेशन समाप्त होने पर लेआउट में बटन के स्थान को वास्तव में बदलने के लिए आपका कोड।

इन कारणों से, दूसरों के बीच, हमने हनीकॉम में एक नई एनीमेशन प्रणाली प्रदान करने का निर्णय लिया, जिसे "संपत्ति एनीमेशन" के विचार पर बनाया गया है।

+0

setFillAfter (सत्य) मैंने यह किया है। ऊपरी भाग के लिए यह ठीक काम नहीं है क्यों .. – Noby

+0

+1 क्योंकि यह उत्तर सही है। @Noby, setFillAfter (true) केवल गारंटी देता है कि चित्रण एनीमेशन के बाद अपने अंतिम राज्य में रहेगा। हालांकि, यह इस तथ्य को नहीं बदलता है कि प्री-3.0 एनीमेशन सिस्टम ऑब्जेक्ट की वास्तविक सीमाओं को कभी भी नहीं बदलता है, इसलिए आपका बटन इंस्टेंस अभी भी अपने मूल आयताकार में रहता है ... भले ही इसे अलग-अलग खींचा गया हो। मूल आयत वह जगह है जहां स्पर्श घटनाओं को पकड़ा जाएगा। – Devunwired

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