2016-01-13 12 views
10

मैं अपने एंड्रॉइड ऐप में कई संगीत प्लेयर जैसे प्ले/पॉज़ एनीमेशन कैसे कार्यान्वित कर सकता हूं? मैंने बहुत सारे समाधानों की कोशिश की है लेकिन कोई भी काम नहीं किया है। MainActivity.java:एंड्रॉइड सामग्री प्ले/पॉज़ वेक्टर ड्रायरेबल एनीमेशन

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     imageButton = (ImageButton) findViewById(R.id.imageView); 
     imageButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Animatable animatable = (Animatable) imageButton.getDrawable(); 
       animatable.start(); 
      } 
     }); 
    } 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context="widefide.com.vectoranimation01.MainActivity"> 


    <ImageButton 
     android:layout_width="wrap_content" 
     style="@style/Widget.AppCompat.Button.Borderless" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     android:id="@+id/imageView" 
     android:src="@drawable/play_pause" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 
</RelativeLayout> 

play_pause.xml:

<?xml version="1.0" encoding="utf-8"?> 
<animated-selector xmlns:android="http://schemas.android.com/apk/res/android" 
android:constantSize="true"> 
<item 
    android:drawable="@drawable/pause_ic" 
    android:state_checked="true" 
    android:id="@+id/pause_state" /> 
<item 
    android:drawable="@drawable/play_ic" 
    android:id="@+id/play_state" /> 
<transition android:fromId="@id/play_state" android:toId="@id/pause_state" android:reversible="true"> 
    <animated-vector android:drawable="@drawable/play_ic"> 
     <target android:name="d" android:animation="@anim/path_morph" /> 
    </animated-vector> 
</transition> 
</animated-selector> 

path_morph

यह मैं अब तक क्या किया है है .xml

012 बजाय drawable बदलने की
<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <objectAnimator 
     android:duration="4000" 
     android:propertyName="pathData" 
     android:valueFrom="@string/ic_play_string" 
     android:valueTo="@string/ic_pause_string" 
     android:valueType="pathType" /> 
</set> 
+1

हमें दिखाएं कि आपने क्या प्रयास किया और वास्तव में समस्या क्या है, अन्यथा कोई भी आपकी मदद नहीं कर सकता या आपकी मदद नहीं करेगा। हम आपके लिए अपना काम करने के लिए यहां नहीं हैं। –

+0

कृपया [यह] (http://stackoverflow.com/a/35738726/2826147) उत्तर देखें। –

उत्तर

11

आपको पीएनजी के बजाय वेक्टर छवि के रूप में प्ले और पॉज़ आइकन को परिभाषित करना होगा और फिर दोनों के बीच संक्रमण के लिए एनिमेटेड वेक्टर ड्रायबल का उपयोग करना होगा।

अधिक जानकारियां के लिए Udacity निश्चित रूप से tickCross उदाहरण देखें: विवरण के लिए https://www.udacity.com/course/viewer#!/c-ud862/l-4969789009/m-4908328939 और https://github.com/udacity/ud862-samples/tree/master/TickCross/app/src/main कोड के लिए

तुम बस टिक और पार पथ से (48dp) को बदलने के लिए:

<string name="path_play">M16,24L38,24L27.3,30.8L16,38ZM16,10L27.3,17.2L38,24L16,24Z</string> 
<string name="path_pause">M12,10L20,10L20,38L12,38ZM28,10L36,10L36,38L28,38Z</string> 
+1

पेश किया धन्यवाद! :-) :) – WideFide

2

एक विकल्प, एक समय में एक ही स्थिति पर दो बटन और केवल एक ही दिखाई डाल करने के लिए है।

जब आप प्ले बटन पर क्लिक करते हैं तो आप प्ले बटन को छुपाते हैं और रोकें बटन को बनाते हैं जब आप रोकें बटन पर क्लिक करते हैं तो आप रोकें बटन को छुपाते हैं और प्ले बटन को दृश्यमान बनाते हैं।

आप अल्फा एनिमेशन जोड़ सकते हैं ताकि वे एक दूसरे को

फीका एनीमेशन के लिए में नहीं हो पाती तो आप इन दो एक्सएमएल फाइल की जरूरत है:

<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> 

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

और प्रत्येक बटन पर आप में फीका शुरू या क्लिक बाहर एनिमेशन और तदनुसार दृश्यता सेट करें।

+0

क्या यह एनिमेट होगा? – WideFide

+0

हाँ, लेकिन यह पुरानी स्कूल एनीमेशन। आपको ऑनक्लिक कोड के साथ फीका/फीका करना होगा। मैं बाद में आपको एक स्निपेट लिखने की कोशिश करूंगा। लेकिन मुझे यकीन है कि अगर आप इसे google ("एंड्रॉइड ऑनक्लिक एनीमेशन") करते हैं तो आप इसे तेज़ी से पा सकते हैं। – ilomambo

+0

लेकिन मैं यूट्यूब के प्ले/पॉज़ बटन की तरह कुछ ढूंढ रहा था। – WideFide

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