x-=10;
rabbit.setX(x); //移动小兔子
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT: //向右方向键
soundpool.play(soundmap.get(2), 1, 1, 0, 0, 1); //播放指定的音频
if(x
x+=10;
rabbit.setX(x); //移动小兔子
}
break;
case KeyEvent.KEYCODE_DPAD_UP: //向上方向键
soundpool.play(soundmap.get(3), 1, 1, 0, 0, 1); //播放指定的音频
if(y>0){
y-=10;
rabbit.setY(y); //移动小兔子
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN: //向下方向键
soundpool.play(soundmap.get(4), 1, 1, 0, 0, 1); //播放指定的音频
if(y
y+=10;
rabbit.setY(y); //移动小兔子
}
break;
default:
soundpool.play(soundmap.get(5), 1, 1, 0, 0, 1); //播放默认按键音
}
return super.onKeyDown(keyCode, event);
}
(5)在res目录下,创建一个menu子目录,并在该目录中创建一个名称为setting.xml的菜单资源文件,在该文件中,添加一个控制是否播放背景音乐的多选菜单组,默认为选中状态,setting.xml文件具体代码如下:
(6)重写onCreateOptionsMenu()方法,应用步骤(5)中添加的菜单文件,创建一个选项菜单,并重写onOptionsItemSelected()方法,对菜单项的选取状态进行处理,主要用于根据菜单项的选取状态控制是否播放背景音乐。具体代码如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater=new MenuInflater(this); //实例化一个MenuInflater对象
inflater.inflate(R.menu.setting, menu); //解析菜单文件
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getGroupId()==R.id.setting){ //判断是否选择了参数设置菜单组
if(item.isChecked()){ //若菜单项已经被选中
item.setChecked(false); //设置菜单项不被选中
Music.stop(this);
}else{
item.setChecked(true); //设置菜单项被选中
Music.play(this, R.raw.jasmine);
}
}
return true;
}
(7)编写Music类,在该类中,首先声明一个MediaPlayer对象,然后编写用于播放背景音乐的play()方法,最后编写用于停止播放背景音乐的stop()方法,关键代码如下:
public class Music {
private static MediaPlayer mp = null; //声明一个MediaPlayer对象
public static void play(Context context, int resource) {
stop(context);
if ( SettingsActivity.getBgSound(context) ) { //判断是否播放背景音乐
mp = MediaPlayer.create(context, resource);
mp.setLooping(true); //是否循环播放
mp.start(); //开始播放
}
}
public static void stop(Context context) {
if (mp != null) {
mp.stop(); //停止播放
mp.release(); //释放资源
mp = null;
}
}
}
说明: 在上面的代码中,加粗的代码SettingsActivity.getBgSound(context)用于获取选项菜单存储的首选值,这样可以实现通过选项菜单控制是否播放背景音乐。
(8)编写SettingsActivity类,该类继承PreferenceActivity类,用于实现自动存储首选项的值。在SettingsActivity类中,首先重写onCreate()方法,在该方法中调用addPreferencesFromResource()方法加载首选项资源文件,然后编写获取是否播放背景音乐的首选项的值的getBgSound()方法,在该方法中返回获取到的值,关键代码如下:
public class SettingsActivity extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
}
//获取是否播放背景音乐的首选项的值
public static boolean getBgSound(Context context){
return PreferenceManager.getDefaultSharedPreferences(context)