我正在尝试在android中制作一个简单的音板。我几乎已经完成了最困难的部分,但是在完成应用程序之前,仍然需要解决一个问题。
我创建了一个嵌套的switch语句,通过该ID可以识别ImageView的ID(在该switch语句内)(让我们说“ case R.id.prank”),我告诉应用程序在按下ImageView时该怎么做,何时启动该操作以及何时启动行动失败了。
现在我在ImageViews或其他方面没有任何问题,我认为它与媒体播放器有关,但我不确定100%。基本上,当我按下第一个ImageView时,会出现第一声音和第二声音的情况。当我按下第二个按钮时,只会播放第二个声音。
我希望第一个ImageView播放第一个声音,第二个ImageView播放第二个声音。有人知道我在做什么错吗?
public class MainActivity extends AppCompatActivity implements OnTouchListener {
ImageView bmw_image;
ImageView prank;
MediaPlayer bmw_mp, prank_mp;
int bmw_id;
int prank_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prank = (ImageView) findViewById(R.id.prank);
bmw_image = (ImageView) findViewById(R.id.bmw_image);
bmw_mp = MediaPlayer.create(this, R.raw.dikke_bmw_jongens_cut);
prank_mp = MediaPlayer.create (this, R.raw.prank_cut);
bmw_image.setOnTouchListener(this);
prank.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.bmw_image:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
bmw_mp.start();
ImageView view = (ImageView) v;
view.getDrawable().setColorFilter(0xff777777, PorterDuff.Mode.MULTIPLY);
view.invalidate();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: {
ImageView view = (ImageView) v;
view.getDrawable().clearColorFilter();
view.invalidate();
break;
}
}
case R.id.prank:
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
prank_mp.start();
ImageView view = (ImageView) v;
//overlay is black with transparency of 0x77 (119)
view.getDrawable().setColorFilter(0xff777777, PorterDuff.Mode.MULTIPLY);
view.invalidate();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
{
ImageView view = (ImageView) v;
view.getDrawable().clearColorFilter();
view.invalidate();
break;
}
}
break;
}
return true;
}
}
您忘记break
为第一种情况写东西了,因此在第二声之后也会播放。
public class MainActivity extends AppCompatActivity implements View.OnTouchListener {
ImageView bmw_image;
ImageView prank;
MediaPlayer bmw_mp, prank_mp;
int bmw_id;
int prank_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
prank = (ImageView) findViewById(R.id.prank);
bmw_image = (ImageView) findViewById(R.id.bmw_image);
bmw_mp = MediaPlayer.create(this, R.raw.dikke_bmw_jongens_cut);
prank_mp = MediaPlayer.create(this, R.raw.prank_cut);
bmw_image.setOnTouchListener(this);
prank.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (v.getId()) {
case R.id.bmw_image: {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
bmw_mp.start();
ImageView view = (ImageView) v;
view.getDrawable().setColorFilter(0xff777777, PorterDuff.Mode.MULTIPLY);
view.invalidate();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: {
ImageView view = (ImageView) v;
view.getDrawable().clearColorFilter();
view.invalidate();
break;
}
}
break;
}
case R.id.prank: {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
prank_mp.start();
ImageView view = (ImageView) v;
//overlay is black with transparency of 0x77 (119)
view.getDrawable().setColorFilter(0xff777777, PorterDuff.Mode.MULTIPLY);
view.invalidate();
break;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL: {
ImageView view = (ImageView) v;
view.getDrawable().clearColorFilter();
view.invalidate();
break;
}
}
break;
}
}
return true;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句