利用线性布局进行布局,添加<ImageView>并对其设置拉伸,不然在不同API的分辨率下在图片视图下会有缝隙。设置每一个<ImageView>的id。在Activity.java添加如下代码:
private ImageView image_white1;
private ImageView image_white2;
private ImageView image_white3;
private ImageView image_white4;
private ImageView image_white5;
private ImageView image_white6;
private ImageView image_white7;
private ImageView image_white8;
private SoundPool soundpool;
public HashMap<Integer,Integer> soundmap = new HashMap<Integer, Integer>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
soundpool=new SoundPool(10, AudioManager.STREAM_MUSIC, 100);
image_white1 = (ImageView) findViewById(R.id.mPanoClickWhiteOne);
image_white2 = (ImageView) findViewById(R.id.mPanoClickWhiteTwo);
image_white3 = (ImageView) findViewById(R.id.mPanoClickWhiteThree);
image_white4 = (ImageView) findViewById(R.id.mPanoClickWhiteFour);
image_white5 = (ImageView) findViewById(R.id.mPanoClickWhiteFive);
image_white6 = (ImageView) findViewById(R.id.mPanoClickWhiteSix);
image_white7 = (ImageView) findViewById(R.id.mPanoClickWhiteSeven);
image_white8 = (ImageView) findViewById(R.id.mPanoClickWhiteEight);
// 调用SoundPool对象的load()的方法加载声音,这里用了HashMap
soundmap.put(1, soundpool.load(this, R.raw.white1, 1));
soundmap.put(2, soundpool.load(this, R.raw.white2, 2));
soundmap.put(3, soundpool.load(this, R.raw.white3, 3));
soundmap.put(4, soundpool.load(this, R.raw.white4, 4));
soundmap.put(5, soundpool.load(this, R.raw.white5, 5));
soundmap.put(6, soundpool.load(this, R.raw.white6, 6));
soundmap.put(7, soundpool.load(this, R.raw.white7, 7));
soundmap.put(8, soundpool.load(this, R.raw.white8,
);
image_white1.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(1), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white1.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white1.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white2.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(2), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white2.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white2.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white3.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(3), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white3.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white3.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white4.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(4), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white4.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white4.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white5.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(5), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white5.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white5.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white6.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(6), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white6.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white6.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white7.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(7), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white7.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white7.setBackgroundColor(0x00ffffff);
}
return true;
}
});
image_white8.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN){
soundpool.play(soundmap.get(8), 1, 1, 0, 0, 1);// 播放第一个琴键对应的音频
image_white8.setBackgroundColor(0x33969696);
}else
if(event.getAction()==MotionEvent.ACTION_UP){
image_white8.setBackgroundColor(0x00ffffff);
}
return true;
}
});
SoundPool主要用于播放一些较短的声音片段,与MediaPlayer相比,SoundPool的优势在于CPU资源占用量低和反应延迟小。另外,SoundPool还支持自行设置声音的品质、音量、 播放比率等参数。
Soundpool的具体用法自己上网查询就会有详细的写法
分享到:
相关推荐
《基于gec6818的Linux小钢琴:探索音乐与技术的美妙融合》 在IT领域,将技术与艺术相结合的创新应用总能带来无尽的惊喜。本项目就是一个典型的例子,它基于gec6818平台,构建了一个功能完备的Linux小钢琴应用,实现...
【标题】:“DIY小钢琴制作方法 工具” 【正文】: 在本文中,我们将深入探讨如何制作一款DIY小钢琴,这是一个充满创新和乐趣的项目,适合那些热爱音乐和手工艺术的人。DIY小钢琴不仅可以提升你的动手能力,还能让...
【Android小钢琴程序详解】 Android小钢琴是一款基于Android平台的应用程序,它允许用户在移动设备上模拟真实的钢琴键盘,提供了一种有趣且便捷的方式来进行音乐创作和娱乐。这个程序是开源的,意味着开发者可以...
【Android小钢琴代码】是一个适合Android初级开发者学习的项目,旨在教授如何在Android平台上实现一个简单的音乐游戏——小钢琴。这个项目将带你深入理解Android应用开发中的音乐播放、用户交互和图形界面设计等核心...
【Android小钢琴源码分析】 Android小钢琴应用是一款在Android平台上运行的音乐类软件,它允许用户通过触摸屏幕上的琴键模拟真实钢琴的声音,提供一个趣味性和教育性兼备的娱乐体验。源码分析将主要围绕以下几个...
【Android小钢琴源码】是一个Android应用开发的学习资源,它提供了完整的Java源代码,供开发者参考和学习。这个项目旨在帮助初学者和有经验的开发者理解Android应用的基本架构,以及如何在Android平台上实现音乐播放...
【标题】:“基于VB自制小钢琴” 在编程领域,Visual Basic(VB)是一种非常流行的事件驱动编程语言,尤其适合初学者。"基于VB自制小钢琴"项目是一个利用VB开发的简单音乐应用程序,允许用户通过电脑键盘模拟演奏...
【Android代码-小钢琴源码.zip】是一个包含Android应用程序开发的源代码压缩包,主要针对的是一个名为"小钢琴"的趣味应用。这个项目可能是为了教授基础的Android编程概念,或者是为了开发一个可以让用户在手机上模拟...
小钢琴
《MyPiano小钢琴》是一款基于编程开发的简易电子钢琴应用,主要面向对音乐有兴趣同时对编程有一定了解的用户。这个项目通常会涉及到以下几个重要的IT知识点: 1. **编程语言**:MyPiano的实现可能使用了某种编程...
自制符合钢琴键盘宽度的小钢琴。未来版本:。1、有机会实现44键的键盘的控制技术,弹琴感受更加逼真。2、实现按键长按,按下键盘播放音频,松开键盘停止播放的技术。3、实现音频降解,即声音消减不会过于生硬,更...
这是一个简单的java小钢琴代码,很简单很简单。
Labview Composer是一个使用National Instruments的可视化编程环境Labview开发的小型音乐应用,它被称为"Labview小钢琴"。这个项目的核心在于通过Labview的图形化编程界面创建一个虚拟的钢琴键盘,用户可以通过点击...
【Android小钢琴源码分析】 本项目为一款基于Android平台的简易钢琴应用源码,它提供了用户在手机上模拟弹奏钢琴的功能。通过这个源码,我们可以深入学习Android应用程序开发的相关知识,包括UI设计、音频处理、...
在本压缩包“Android源码——小钢琴源码.zip”中,我们主要关注的是一个基于Android平台的小钢琴应用的源代码。这个应用可能是为教育、娱乐或者编程学习目的设计的,它展示了Android平台上多媒体处理、用户界面设计...