2013-12-17 4 views
34

मैं एनीमेशनएंड्रॉयड एनीमेशन अल्फा

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/linear_interpolator"> 
    <alpha 
     android:fromAlpha="0.2" 
     android:toAlpha="1.0" 
     android:duration="500"/> 
</set> 

मिल गया है और imageView

<ImageView 
    android:id="@+id/listViewIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/settings" 
    android:alpha="0.2"/> 

और कोड:

final Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha); 
final ImageView iv = (ImageView) findViewById(R.id.listViewIcon); 
anim .setFillAfter(true); 
iv.startAnimation(anim); 
शुरुआत में

तो मैं अल्फा 0.2 के साथ और कम से imageView है अंत में मैं अल्फा 1 के साथ ImageView रखना चाहता हूं। लेकिन यह इस तरह काम नहीं करता है - जब एनीमेशन अधिक अल्फा शुरू होता है और एनीमेशन फिनिस एच अल्फा 0.2

मेरी छवि को 0.2-> 1 से एनिमेट करने के लिए क्या बदलना है?

मैंने अलग-अलग सेटिंग्स के साथ जांच की है - मैंने एंड्रॉइड सेट किया है: अल्फा = "1.0", एल्पा = "1.0" से एल्फा = "0.2" यह काम करता है जैसे कि मुझे उम्मीद है - अल्फा 1 से 0.2 तक। यह imageView से अल्फा एनीमेशन से अल्फा से गुणा किया जाता तरह लग रहा है ...

+0

अंत में 0.2 अल्फा को कूदने से रोकने के लिए, 'fillAfter' विशेषता का उपयोग करें: http://developer.android.com/reference/android/view/animation/Animation.html#attr_android:fillAfter – Jave

+0

यह मामला नहीं है। अल्फा 1 पर नहीं जाता है। जब मैं 1-> 0.2 से एनिमेट करता हूं तो यह ठीक काम करता है और 0.2 पर रहता है (मैं बाद में भरता हूं)। जब मैं 0.2 से 1 तक एनिमेट करना चाहता हूं तो यह लगभग 0 तक फीका होता है और 0.2 – wioskamala

+0

पर जाता है क्या आपने सत्य को 'fillEnabled' सेट किया है? – Jave

उत्तर

64

प्रयास करें इस

AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); 
animation1.setDuration(1000); 
animation1.setStartOffset(5000); 
animation1.setFillAfter(true); 
iv.startAnimation(animation1) 
+1

मेरे उदाहरण में समान परिणाम ... – wioskamala

+0

इमेजव्यू प्रोपर्टीज से रीव अल्फा और अपने डिवाइस से असीमित ऐप। साफ, निर्माण और फिर से स्थापित करें। क्योंकि यह मेरी तरफ काम कर रहा है –

+0

मैं अल्फा को हटाना नहीं चाहता - छवि अल्फा 0.2 के साथ फीका होना चाहिए। ऐप्लिकेशंस कुछ सामान कर रहा है और जब तैयार है, मैं अपनी छवि को अल्फा 1 एनिमेटेड करना चाहता हूं। – wioskamala

1
<ImageView 
    android:id="@+id/listViewIcon" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:src="@drawable/settings"/> 

से XML-> imageView android:apha=0.2 निकालें।

1

हम्म ...

बात गलत है, और संभवतः एंड्रॉयड एपीआई में एनिमेशन के समुचित संचालन में।

0.2f = 0.2f of 0.2f (20% from 100%) ie from 0.2f/5 = 0.04f 
1f = 0.2f 

तो वास्तव में अपने एनीमेशन 0.04 से काम करता है :

तथ्य यह है कि जब आप 0.2f के अपने कोड अल्फा मूल्य में सेट इसका मतलब है कि एंड्रॉयड के लिए xml फ़ाइल में सेटिंग के आधार पर की जाती है कि है च 0.2f को

झंडा setFillAfter(true) निश्चित रूप से काम करता है, लेकिन क्योंकि आप 0.2f के रूप में मामूली एसीसी निर्दिष्ट करें कि आप, यह समझना चाहिए कि अपने एनीमेशन ImageView के अंत में की जरूरत है एक के 0.2f बजाय अल्फा मूल्य होगा एनीमेशन में एक योग्य मूल्य (अधिकतम अल्फा चैनल का एक प्रकार)।

तो यदि आप वांछित परिणाम चाहते हैं तो अपने सभी तर्क को अपने कोड में ले जाएं और एक्सएमएल में निर्धारित करने के बजाय कोड में एनीमेशन को कुशलतापूर्वक इस्तेमाल करें।

आप को समझना चाहिए कि आपके एनिमेशन सीधे दो बातें निर्भर करता है:

एनिमेटेड दृश्य के
  • LayoutParams
  • एनीमेशन पैरामीटर।

एनीमेशन मापदंडों setFillAfter \ setFillBefore तरीकों में अपने LayoutParams में हेरफेर।

+0

हां। तुम सही हो। जब मैं अपने कोड पर स्टार्ट लेआउट पैरा बदलता हूं तो यह एक आकर्षण की तरह काम करता था! –

9

1 को अल्फा स्थापना एनीमेशन शुरू करने से पहले मेरे लिए काम किया:

AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); 
animation1.setDuration(500); 
iv.setAlpha(1f); 
iv.startAnimation(animation1); 

कम से कम मेरी परीक्षणों पर, वहाँ क्योंकि एनीमेशन शुरू करने से पहले अल्फा की स्थापना का कोई अस्थिर है। यह ठीक काम करता है।

+0

यह मेरे लिए भी काम करता है (संपादित करें: मेरी गलती, मेरे पास एक्सएमएल हस्तक्षेप है: एंड्रॉइड: अल्फा = "0")। इसके साथ थोड़ा सा खेलेंगे, लेकिन मुझे इसे 0 से शुरू करने की आवश्यकता है, इसलिए यह अभी काम करता है। धन्यवाद। –

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