2014-01-31 49 views
0

正如標題所述,我已經設置了一個按鈕來播放特定的音樂,但是我也希望它能夠從已經存在的圖像視圖中激活一個動畫,並與之一起播放(對於我的情況,一段音樂的音樂),然後如果按鈕被壓制(停止音樂)或歌曲結束時恢復原始圖像視圖。如何通過已設置播放音樂的按鈕播放動畫? (日食)

與按鈕活動的代碼是在這裏:

package net.ZachApps.sheetmusicapp; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class ElDoradoScore extends Activity { 

Button btnElDorado; 
ImageView imgscore; 
MediaPlayer songElDorado; 
int playing; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.eldoradoscore); 
     btnElDorado = (Button)findViewById(R.id.btnElDorado); 
     btnElDorado.setOnClickListener(bElDorado); 
     songElDorado = new MediaPlayer(); 
     songElDorado = MediaPlayer.create(this, R.raw.eldoradoscore); 
     playing = 0; 
    } 
    Button.OnClickListener bElDorado = new Button.OnClickListener(){ 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
     switch(playing){ 
     case 0: 
      songElDorado.start(); 
      playing=1; 
      btnElDorado.setText("Stop El Dorado Song"); 

      break; 
     case 1: 
      songElDorado.stop(); 
      playing = 0; 
      btnElDorado.setText("Start El Dorado Song"); 

      break; 
     } 

     } 

    }; 
} 

我已經動畫保存爲RES /動畫/ score.xml

<?xml version="1.0" encoding="utf-8"?> 
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false"> 
    <item android:drawable="@drawable/eldoradop1" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop2" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop3" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop4" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop5" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop6" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop7" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop8" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop9" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop10" android:duration="2000" /> 
    <item android:drawable="@drawable/eldoradop11" android:duration="2000" /> 
</animation-list> 

我試圖尋找一種方式從按鈕(與案例)激活動畫,但我沒有找到有用的信息,當我搜查。我應該從這裏做什麼? 我知道有另一種方式來設置它,但我想知道從這個角度來看是否可能。

回答

0

添加其他成員變量:

AnimationDrawable animation; 

添加在onCreate方法:

imgscore = (ImageView)findViewById(R.id.imgscore); // assuming that's the name 
imgscore.setBackgroundResource(
    R.drawable.your_animation_resource); // I don't know the resource name 
animation = (AnimationDrawable)imgscore.getBackground(); 

添加case 0下你OnClickListener的switch語句:

animation.start(); 

而下case 1

animation.stop(); 

取決於你想要的行爲,您可能還需要設置你的OnClickListenerImageView的知名度。

編輯: 作爲一個側面說明,你應該確保呼籲MediaPlayerrelease在適當的時間(至少是在onDestroy),並根據您的意圖,你可能需要一點點更復雜的治療以產生所需的行爲。