2012-12-26 41 views
15

इस तरह अच्छी तरह से एक drawable काम Alphaing:ऑब्जेक्टएनिमीटर द्वारा ड्रॉ करने योग्य कैसे घुमाएं?

if(mAlphaAnimation == null){ 
     mAlphaAnimation = ObjectAnimator.ofFloat(this, "alpha", 0.0f,1.0f).setDuration(TARGET_ANIM_ALPHA_DURATION); 
     mAlphaAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); 
     mAlphaAnimation.setStartDelay(TARGET_ANIM_ALPHA_DELAY_BASE*power); 
     mAlphaAnimation.setRepeatCount(ValueAnimator.INFINITE); 
     mAlphaAnimation.setRepeatMode(ValueAnimator.REVERSE); 
     mAlphaAnimation.addUpdateListener(this); 
} 

लेकिन मैं नीचे की तरह एक drawable बारी बारी से चाहते हैं, तो यह डॉन के काम।

private void createRotateAnim(float fromDegress,float toDegress,int duration){ 
    if(mRotateAnimation == null){ 
     mRotateAnimation = ObjectAnimator.ofFloat(this, "rotation",fromDegress,toDegress).setDuration(duration); 
     mRotateAnimation.setStartDelay(100); 
     mRotateAnimation.setInterpolator(new AccelerateInterpolator()); 
     mRotateAnimation.addUpdateListener(this); 
    } 
} 

किसी को भी मुझे इस समस्या को हल करने के लिए मदद कर सकते हैं, या इन एक रोटेशन drawable एनिमेशन बनाने के लिए किसी भी अन्य तरीका है।

मुझे मेरी खराब अंग्रेजी के लिए खेद है।

+0

मैं टच इवेंट के माध्यम से एक खींचने योग्य स्थिति बदलना चाहता हूं, ड्रॉबल एक एकल ड्रॉबल है, एक ड्रॉइंग सूची नहीं है। उदाहरण के लिए, स्क्रीन पर चलती दूरी के अनुसार एक ड्रॉबल अल्फा मान बदलें। और यह काम खत्म हो गया है। फिर, मैं चलती कोण के अनुसार एक खींचने योग्य दिशा बदलना चाहता हूँ। दूसरे शब्दों में, कोण के अनुसार खींचने योग्य घुमाएं। ये drawables एक ही दृश्य पर आकर्षित किया जाएगा। मैं रोटेशन प्रॉपर्टी के साथ ऑब्जेक्टएनिमीटर ऑब्जेक्ट को जानना चाहता हूं, एक ड्रॉइंग घुमा सकता है या नहीं। शायद, यह घूम सकता है, क्योंकि एक छविदृश्य पृष्ठभूमि खींचने योग्य उपयोग करने योग्य ड्रॉइंग को घुमा सकता है। – marine8888

+0

संभावित डुप्लिकेट [एंड्रॉइड: व्यू के आयाम के आंशिक मानों के साथ एक दृश्य का अनुवाद करने के लिए ऑब्जेक्टएनिमीटर का उपयोग करना] (http://stackoverflow.com/questions/10854940/android-using-objectanimator-to-translate-a-view-with- fractional-values-of-the) –

उत्तर

13

इस छवि पर लागू इस सरल रोटेशन एनीमेशन को आजमाएं।

ImageView imageview = (ImageView)findViewById(R.id.myimage); 
RotateAnimation rotate = new RotateAnimation(180, 360, Animation.RELATIVE_TO_SELF,  
0.5f, Animation.RELATIVE_TO_SELF, 0.5f); 
    rotate.setDuration(500); 
imageview.startAnimation(rotate); 

इस उत्तर सिर्फ सवाल का एक कारण है, यह सही है कि क्लिक करने योग्य क्षेत्र View की वर्तमान स्थिति की तुलना में अलग हो जाएगा। क्लिक करने योग्य क्षेत्र को सही बनाने के लिए कृपया इस प्रश्न की जांच करें। Button is not clickable after TranslateAnimation

+0

धन्यवाद। लेकिन मैं ड्रॉबल को अन्य दृश्यों में नहीं देखना चाहता, जैसे ImageView और इसी तरह, लेकिन इसे दृश्य के उप-वर्ग (नहीं देखें समूह) पर खींचना चाहता हूं। – marine8888

+1

@ marine8888 मुझे लगता है कि आपका गलत, 'ImageView' बस' व्यू 'का उप-वर्ग है और' व्यू ग्रुप 'नहीं है (जो स्वयं' व्यू' का उप-वर्ग है)। आप 'व्यू' का अपना सबक्लास बना सकते हैं और ड्रैवेबल को कैनवास पर प्रस्तुत कर सकते हैं, हालांकि यह 'ImageView' के समान काम करेगा। –

47

इसके बजाय ObjectAnimator के साथ प्रयास करें।

ImageView imageview = (ImageView)findViewById(R.id.image); 

ObjectAnimator imageViewObjectAnimator = ObjectAnimator.ofFloat(imageview , 
        "rotation", 0f, 360f); 
      imageViewObjectAnimator.setDuration(1000); // miliseconds 
      imageViewObjectAnimator.start(); 

संपादित इस सवाल के बाद से कुछ ध्यान आकर्षित क्यों ObjectAnimator का उपयोग कर के बारे में अन्य संक्रमण एनिमेटरों

बात करने के बजाय ObjectAnimator उपयोग करने के लिए मुझे समझाने की है कि यह दोनों दिखाई और आगे बढ़ रहा है कर रहा है आइटम के क्लिक करने योग्य क्षेत्र, यदि आप किसी अन्य एनीमेशन विधि का उपयोग करते हैं, उदाहरण के लिए ट्रांज़िशन एनीमेशन या कुछ अन्य एनीमेटर्स, और मान लें कि क्या आप स्क्रीन के निचले बाएं से ऊपर बाईं ओर Button स्थानांतरित करना चाहते हैं, तो यह केवल दृश्यमान को स्थानांतरित करेगा क्षेत्र लेकिन Button स्वयं नहीं, क्लिक करने योग्य क्षेत्र अभी भी पिछली स्थिति पर होगा, इस मामले में क्लिक करने योग्य क्षेत्र अभी भी बाईं ओर स्थित बाईं ओर स्थित होगा जहां आपने बटन ले जाया था।

यदि आप ObjectAnimator के साथ ऐसा करते हैं, तो दृश्य क्षेत्र और क्लिक करने योग्य क्षेत्र वांछित स्थान को स्थानांतरित करेगा।