Android中如何制作游戏的启动菜单
创始人
2024-07-30 15:41:11
0

在游戏制作中,通常都在启动游戏前,有一个菜单,供用户进行各种关于游戏的设置,比如关数,声音,角色等。本文介绍如何用Android制作一个效果不错的游戏界面启动菜单,并且指导你使用Android中的SharedPreferences去实现保存游戏设置的功能。

一 效果图

我们先来看下实现后的效果,如下图所示:

 

Android中制作游戏的启动菜单

可以看到,该界面中,使用了有特色的字体和背景布局图,当用户在每个选项上点选时,会发现有不同颜色的效果出现。

而当用户点SETTINGS游戏设置时,则进入如下界面:

 

Android中制作游戏的启动菜单

当我们在以上的设置中选择某项设置,比如选择SOUND OFF,再选BACK退出后,则系统会自动记忆下我们的设置,当再进入菜单进行选择时,同样会显示相同的选项。

二 设计菜单的layout布局文件

首先,我们设计菜单的layout文件,这里我们使用的是相对布局,代码如下:

  1. xmlns:android="http://schemas.android.com/apk/res/android" 
  2.  
  3. android:layout_width="fill_parent" 
  4.  
  5. android:layout_height="fill_parent"> 

 

  1. android:src="@drawable/menuback" 
  2.  
  3. android:layout_width="fill_parent" 
  4.  
  5. android:layout_height="fill_parent" /> 

 

  1. android:orientation="vertical" 
  2.  
  3. android:layout_margin="10dp" 
  4.  
  5. android:layout_width="fill_parent" 
  6.  
  7. android:layout_height="fill_parent" > 

 

  1. android:text="START GAME" 
  2.  
  3. android:layout_gravity="right" 
  4.  
  5. android:id="@+id/start" 
  6.  
  7. style="@style/MenuFont" /> 
  1. android:text="QUICK GAME" 
  2.  
  3. android:id="@+id/quick" 
  4.  
  5. style="@style/MenuFont" /> 
  1. android:text="SETTINGS" 
  2.  
  3. android:id="@+id/settings" 
  4.  
  5. style="@style/MenuFont" /> 
  1. android:text="ABOUT" 
  2.  
  3. android:id="@+id/about" 
  4.  
  5. style="@style/MenuFont" /> 
  1. android:text="EXIT" 
  2.  
  3. android:id="@+id/exit" 
  4.  
  5. style="@style/SystemFont" /> 

其中,每个选项中,都套用了字体样式。在Android中,可以在style目录下建立styles.xml,定义如下样式:

三 定义字体

这里,我们需要使用自定义的字体。在Android中,自定义字体的方法很简单,只需

要按如下步骤实现:

1 找到所需要的字体

2 将字体放到assets目录下

3 在代码中,创建Typeface类的实例,使用createFromAsset调用字体,

4 通过调用textview控件的setTypeface方法,应用字体

示例代码如下:

  1. Typeface tf = Typeface.createFromAsset(getAssets(),"data/fonts/floral.ttf"); 
  2.  
  3. TextView tv = (TextView) findViewById(R.id.start); 
  4.  
  5. tv.setTypeface(tf) 

四、保存用户的选择设置

为了实现保存用户对游戏的设置,可以使用Android中的SharedPreferences进行保存。SharedPreferences的详细说明在(http://developer.android.com/reference/android/content/SharedPreferences.html)可以找到,它实际上是以键值对的形式,保存了用户的数据,可以保存的类型有int,Boolean,String,float,long等。在实际的代码中,我们必须先读取SharedPreferences

中的数据,如果数据值为空,则对数据进行初始化,如下代码所示:

  1. private boolean[] settingsHolder = new boolean[4]; 
  2.  
  3. private void getSettings() { 
  4.  
  5. SharedPreferences settings = getSharedPreferences("sampleGameSettings", 0); 
  6.  
  7. settingsHolder[0] = settings.getBoolean("sound", true); 
  8.  
  9. settingsHolder[1] = settings.getBoolean("music", true); 
  10.  
  11. settingsHolder[2] = settings.getBoolean("vibrate", true); 
  12.  
  13. settingsHolder[3] = settings.getBoolean("graphics", true); 
  14.  

可以看到,初始时,把四个选择项都设置为true。当用户点各选项时,会把on开关设置为off(或者off设置为on),通过如下代码实现:

  1. @Override 
  2.  
  3. public void onClick(View v) { 
  4.  
  5. SharedPreferences settings = getSharedPreferences(MenuActivity.PREFS_NAME, 0); 
  6.  
  7. SharedPreferences.Editor editor = settings.edit(); 
  8.  
  9. switch(v.getId()){ 
  10.  
  11. case R.id.sound: 
  12.  
  13. editor.putBoolean("sound", !settingsHolder[0]); 
  14.  
  15. break; 
  16.  
  17. case R.id.music: 
  18.  
  19. editor.putBoolean("music", !settingsHolder[1]); 
  20.  
  21. break; 
  22.  
  23. case R.id.vibrate: 
  24.  
  25. editor.putBoolean("vibrate", !settingsHolder[2]); 
  26.  
  27. break; 
  28.  
  29. case R.id.graphics: 
  30.  
  31. editor.putBoolean("graphics", !settingsHolder[3]); 
  32.  
  33. break; 
  34.  
  35. case R.id.back: 
  36.  
  37. finish(); 
  38.  
  39. break; 
  40.  
  41.  
  42. editor.commit(); 
  43.  
  44. getSettings(); 
  45.  
  46. setText(); 
  47.  

至此,全部代码完成.

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...