技术开发 频道

Android中如何制作游戏的启动菜单

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

  一 效果图

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

Android中制作游戏的启动菜单

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

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

Android中制作游戏的启动菜单

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

  二 设计菜单的layout布局文件

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

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
  xmlns:android
="http://schemas.android.com/apk/res/android"
  android:layout_width
="fill_parent"
  android:layout_height
="fill_parent">  

    
<ImageView
        android:src
="@drawable/menuback"
        android:layout_width
="fill_parent"
        android:layout_height
="fill_parent" />  

  
<LinearLayout
        android:orientation
="vertical"
        android:layout_margin
="10dp"
        android:layout_width
="fill_parent"
        android:layout_height
="fill_parent" >

        
<TextView
            android:text
="START GAME"
            android:layout_gravity
="right"
            android:id
="@+id/start"
        style
="@style/MenuFont" />

        
<TextView
            android:text
="QUICK GAME"
            android:id
="@+id/quick"
        style
="@style/MenuFont" />

        
<TextView
            android:text
="SETTINGS"
            android:id
="@+id/settings"
        style
="@style/MenuFont" />

        
<TextView
            android:text
="ABOUT"
            android:id
="@+id/about"
        style
="@style/MenuFont" />  

        
<TextView
            android:text
="EXIT"
            android:id
="@+id/exit"
        style
="@style/SystemFont" />

      
</LinearLayout>
</RelativeLayout>

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

<style name="MenuFont">
    
<item name="android:textSize">25sp</item>
    
<item name="android:textColor">#FFFFFF00</item>
    
<item name="android:textStyle">bold</item>
    
<item name="android:clickable">true</item>
    
<item name="android:layout_weight">1</item>
    
<item name="android:gravity">right|center</item>
    
<item name="android:layout_width">fill_parent</item>
    
<item name="android:layout_height">wrap_content</item>
</style>
  
<style name="SystemFont">
        
<item name="android:textSize">25sp</item>
        
<item name="android:textColor">#FFFF6a17</item>
        
<item name="android:textStyle">bold</item>
        
<item name="android:clickable">true</item>
        
<item name="android:layout_weight">1</item>
        
<item name="android:gravity">right|center</item>
        
<item name="android:layout_width">fill_parent</item>
        
<item name="android:layout_height">wrap_content</item>
</style>

  三 定义字体

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

  要按如下步骤实现:

  1 找到所需要的字体

  2 将字体放到assets目录下

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

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

  示例代码如下:

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

  四、保存用户的选择设置

  为了实现保存用户对游戏的设置,可以使用Android中的SharedPreferences进行保存。SharedPreferences的详细说明在

  (http://developer.android.com/reference/android/content/SharedPreferences.html

  )可以找到,它实际上是以键值对的形式,保存了用户的数据,可以保存的类型有int,Boolean,String,float,long等。在实际的代码中,我们必须先读取SharedPreferences

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

private boolean[] settingsHolder = new boolean[4];

private void getSettings() {
    SharedPreferences settings
= getSharedPreferences("sampleGameSettings", 0);
    settingsHolder[
0] = settings.getBoolean("sound", true);
    settingsHolder[
1] = settings.getBoolean("music", true);
    settingsHolder[
2] = settings.getBoolean("vibrate", true);
    settingsHolder[
3] = settings.getBoolean("graphics", true);
}

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

  @Override
    
public void onClick(View v) {
        SharedPreferences settings
= getSharedPreferences(MenuActivity.PREFS_NAME, 0);
        SharedPreferences.Editor editor
= settings.edit();

        switch(v.getId()){
            
case R.id.sound:
                editor.putBoolean(
"sound", !settingsHolder[0]);
                break;
            
case R.id.music:
                editor.putBoolean(
"music", !settingsHolder[1]);
                break;
            
case R.id.vibrate:
                editor.putBoolean(
"vibrate", !settingsHolder[2]);
                break;
            
case R.id.graphics:
                editor.putBoolean(
"graphics", !settingsHolder[3]);
                break;
            
case R.id.back:
                finish();
                break;
        }

        editor.commit();
        getSettings();
        setText();
    }

  至此,全部代码完成,大家可以在这里下载本文代码(http://p-xr.com/wp-content/uploads/2011/05/GameMenu.rar)

0
相关文章