【问题标题】:ImageButton Soundboard android appImageButton 音板安卓应用
【发布时间】:2011-04-04 19:30:38
【问题描述】:

我刚刚开始使用我的第一个音板。基本上这就是我到目前为止所拥有的(除了我有 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;

公共类主扩展活动{

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();

        }
    });

}

}

【问题讨论】:

  • 我根据 Matthew 的建议重新编写了应用程序。使用地图效果很好!但是现在我不知道如果应用程序进入后台,如何暂停和恢复 MediaPlayer。有人可以帮忙吗?

标签: android audio imagebutton


【解决方案1】:

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

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

Map<Integer, Integer> map = new HashMap<Integer, Integer>>();
map.put(R.id.button1, R.raw.sound1);
map.put(R.id.button2, R.raw.sound2);
   ...

然后迭代:

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 实例。

【讨论】:

  • 谢谢您,非常感谢您的帮助。我现在正在尝试重写它。像我这样的初学者可能会卡在地图上,还有其他技巧吗?
猜你喜欢
  • 1970-01-01
  • 2015-10-31
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
相关资源
最近更新 更多