Android中如何制作游戲的啟動菜單
在游戲制作中,通常都在啟動游戲前,有一個菜單,供用戶進行各種關(guān)于游戲的設(shè)置,比如關(guān)數(shù),聲音,角色等。本文介紹如何用Android制作一個效果不錯的游戲界面啟動菜單,并且指導(dǎo)你使用Android中的SharedPreferences去實現(xiàn)保存游戲設(shè)置的功能。
一 效果圖
我們先來看下實現(xiàn)后的效果,如下圖所示:

可以看到,該界面中,使用了有特色的字體和背景布局圖,當(dāng)用戶在每個選項上點選時,會發(fā)現(xiàn)有不同顏色的效果出現(xiàn)。
而當(dāng)用戶點SETTINGS游戲設(shè)置時,則進入如下界面:

當(dāng)我們在以上的設(shè)置中選擇某項設(shè)置,比如選擇SOUND OFF,再選BACK退出后,則系統(tǒng)會自動記憶下我們的設(shè)置,當(dāng)再進入菜單進行選擇時,同樣會顯示相同的選項。
二 設(shè)計菜單的layout布局文件
首先,我們設(shè)計菜單的layout文件,這里我們使用的是相對布局,代碼如下:
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- android:src="@drawable/menuback"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" />
- android:orientation="vertical"
- android:layout_margin="10dp"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent" >
- android:text="START GAME"
- android:layout_gravity="right"
- android:id="@+id/start"
- style="@style/MenuFont" />
- android:text="QUICK GAME"
- android:id="@+id/quick"
- style="@style/MenuFont" />
- android:text="SETTINGS"
- android:id="@+id/settings"
- style="@style/MenuFont" />
- android:text="ABOUT"
- android:id="@+id/about"
- style="@style/MenuFont" />
- android:text="EXIT"
- android:id="@+id/exit"
- style="@style/SystemFont" />
其中,每個選項中,都套用了字體樣式。在Android中,可以在style目錄下建立styles.xml,定義如下樣式:
三 定義字體
這里,我們需要使用自定義的字體。在Android中,自定義字體的方法很簡單,只需
要按如下步驟實現(xiàn):
1 找到所需要的字體
2 將字體放到assets目錄下
3 在代碼中,創(chuàng)建Typeface類的實例,使用createFromAsset調(diào)用字體,
4 通過調(diào)用textview控件的setTypeface方法,應(yīng)用字體
示例代碼如下:
- Typeface tf = Typeface.createFromAsset(getAssets(),"data/fonts/floral.ttf");
- TextView tv = (TextView) findViewById(R.id.start);
- tv.setTypeface(tf)
四、保存用戶的選擇設(shè)置
為了實現(xiàn)保存用戶對游戲的設(shè)置,可以使用Android中的SharedPreferences進行保存。SharedPreferences的詳細說明在(http://developer.android.com/reference/android/content/SharedPreferences.html)可以找到,它實際上是以鍵值對的形式,保存了用戶的數(shù)據(jù),可以保存的類型有int,Boolean,String,float,long等。在實際的代碼中,我們必須先讀取SharedPreferences
中的數(shù)據(jù),如果數(shù)據(jù)值為空,則對數(shù)據(jù)進行初始化,如下代碼所示:
- 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);
- }
可以看到,初始時,把四個選擇項都設(shè)置為true。當(dāng)用戶點各選項時,會把on開關(guān)設(shè)置為off(或者off設(shè)置為on),通過如下代碼實現(xiàn):
- @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();
- }
至此,全部代碼完成.