2011-04-04 61 views
0

我剛剛開始使用我的第一個音板。基本上這是我迄今爲止(除了我有40個聲音)。有誰知道更好的方法來做到這一點?我必須去約會,但我今天晚些時候會回來回覆。謝謝,任何人都可以提供幫助。ImageButton Soundboard android應用程序

------------------------- soundboard --------------

package com .soundboard.app;

import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer;

import android.os.Bundle; import android.view.View; import android.widget.Button; import 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(); 

     } 
    }); 

}

}

+0

我使用Matthew的建議重新編寫了應用程序。使用地圖效果很好!但現在我不知道如何暫停和恢復MediaPlayer,如果應用程序進入後臺。誰能幫忙? – Colby 2011-04-04 23:17:06

回答

0

你需要爲這個安排在一個循環中發生的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實例。

+0

謝謝,我真的很感謝你的幫助。我正在嘗試重寫它。有沒有其他的映射像我這樣的初學者的技巧可能會卡住? – Colby 2011-04-04 22:24:47