Ich mache eine Piano-App, in der neun Tasten und wenn wir den Knopf berühren jede Taste einen anderen Klang. Aber jetzt sind die Probleme -Android-Tasten Probleme
1) wenn wir den Knopf berühren, spielt es nur den Ton dieses Knopfes und es spielte nicht den Ton der folgenden Knöpfe auf dem Bewegen der Finger.
2) Wenn ich ACTION_UP benutze, um den Ton zu stoppen, dann wird bei diesen Ereignissen, wenn wir den Finger von der Taste nehmen, der Ton gestoppt, ohne den kompletten Ton dieser Taste zu beenden.
public class Piano_view extends Activity implements View.OnTouchListener {
Button sound1, sound2, sound3, sound4, sound5, sound6, sound7, sound8,
sound9;
MediaPlayer mp1, mp2, mp3, mp4, mp5, mp6, mp7, mp8, mp9;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.piano_view);
initMpFiles();
setVolumeControlStream(AudioManager.STREAM_MUSIC);
sound1 = (Button) findViewById(R.id.one);
sound2 = (Button) findViewById(R.id.second);
sound3 = (Button) findViewById(R.id.three);
sound4 = (Button) findViewById(R.id.four);
sound5 = (Button) findViewById(R.id.five);
sound6 = (Button) findViewById(R.id.six);
sound7 = (Button) findViewById(R.id.seven);
sound8 = (Button) findViewById(R.id.eight);
sound9 = (Button) findViewById(R.id.nine);
sound1.setOnTouchListener(this);
sound2.setOnTouchListener(this);
sound3.setOnTouchListener(this);
sound4.setOnTouchListener(this);
sound5.setOnTouchListener(this);
sound6.setOnTouchListener(this);
sound7.setOnTouchListener(this);
sound8.setOnTouchListener(this);
sound9.setOnTouchListener(this);
}
private void initMpFiles() {
mp1 = MediaPlayer.create(Piano_view.this, R.raw.a4);
mp2 = MediaPlayer.create(Piano_view.this, R.raw.b4);
mp3 = MediaPlayer.create(Piano_view.this, R.raw.c4);
mp4 = MediaPlayer.create(Piano_view.this, R.raw.c5);
mp5 = MediaPlayer.create(Piano_view.this, R.raw.e4);
mp6 = MediaPlayer.create(Piano_view.this, R.raw.b4);
mp7 = MediaPlayer.create(Piano_view.this, R.raw.f4);
mp8 = MediaPlayer.create(Piano_view.this, R.raw.d4);
mp9 = MediaPlayer.create(Piano_view.this, R.raw.g4);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
int id = v.getId();
switch (id) {
case R.id.one:
float x = event.getX();
float y = event.getY();
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp1.start();
mp1.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.second:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp2.start();
mp2.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.three:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp3.start();
mp3.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.four:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp4.start();
mp4.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.five:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp5.start();
mp5.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.six:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp6.start();
mp6.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.seven:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp7.start();
mp7.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.eight:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp8.start();
mp8.seekTo(0);
v.setPressed(true);
return true;
}
break;
case R.id.nine:
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
mp9.start();
mp9.seekTo(0);
v.setPressed(true);
return true;
}
break;
}
return true;
}
}
danke und können Sie mir bitte einen Link senden, der ein Beispiel enthält, in dem wir eine Ansicht zeichnen, die Schaltflächen enthält. – Rini