首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageButton Soundboard安卓应用

ImageButton Soundboard安卓应用
EN

Stack Overflow用户
提问于 2011-04-05 03:30:38
回答 1查看 1.2K关注 0票数 0

我只是从我的第一个响板开始。基本上,这就是我到目前为止所拥有的(除了我有40个声音)。有没有人知道更好的方法呢?我得去赴个约会,但我会在今天晚些时候回来回复你。谢谢,能帮上忙的人。

打包com.soundboard.app;

导入android.app.Activity;导入android.content.Intent;导入android.media.MediaPlayer;

导入android.os.Bundle;导入android.view.View;导入android.widget.Button;导入android.widget.ImageButton;

公共类main扩展了Activity {

代码语言:javascript
复制
MediaPlayer sound1, sound2, sound3;


ImageButton button1, button2, button3;



@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);




    sound1 = MediaPlayer.create(this, R.raw.sound1);

    button1 = (ImageButton) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound1.start();
        }
    });

    squeak3 = MediaPlayer.create(this, R.raw.squeak3);

    dogsqueak = (ImageButton) findViewById(R.id.dogsqueak);
    dogsqueak.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            squeak3.start();
        }
    });





    sound2 = MediaPlayer.create(this, R.raw.sound2);

    button2 = (ImageButton) findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound2.start();

        }
    });




    sound3 = MediaPlayer.create(this, R.raw.sound3);

    button3= (ImageButton) findViewById(R.id.button3);
    button3.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            sound3.start();

        }
    });

}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-05 03:49:49

有了40个按钮,你需要安排这在循环中发生。

尽管有更聪明的方法可以做到这一点,但您可以从构建Map开始

代码语言:javascript
复制
Map<Integer, Integer> map = new HashMap<Integer, Integer>>();
map.put(R.id.button1, R.raw.sound1);
map.put(R.id.button2, R.raw.sound2);
   ...

然后迭代:

代码语言:javascript
复制
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
    final MediaPlayer sound = MediaPlayer.create(entry.getValue());
    Button button = (ImageButton) findViewById(entry.getKey());
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sound.start();
        }
    });
}

这将使您体验到循环解决方案。您还需要考虑如何管理MediaPlayer实例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5543361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档