如何通过已设置播放音乐的按钮播放动画? (日食)

时间:2014-01-31 13:54:00

标签: android eclipse animation android-mediaplayer

如标题中所述,我已经设置了一个播放特定音乐的按钮,但是我还希望它能够从已经存在的图像视图中激活动画,该视频将随之播放(对于我的情况,为如果按下按钮(停止播放音乐)或歌曲播放完毕,则恢复原始图像视图。

带按钮的活动代码如下:

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

我试图寻找一种从按钮激活动画的方法(带有案例),但是在搜索时我没有找到有用的信息。我该怎么办? 我知道还有另一种方法来设置它,但我想知道从这个角度来看是否可行。

1 个答案:

答案 0 :(得分: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

animation.start();

case 1下:

animation.stop();

根据您的行为,您可能还需要设置ImageViewOnClickListener的展示率。

编辑: 作为附注,您应确保在适当的时间(至少在release)致电MediaPlayer onDestroy,并根据您的意图,您可能需要一种更复杂的治疗方法,以产生所需的行为。