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

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

當我們在以上的設置中選擇某項設置,比如選擇SOUND OFF,再選BACK退出后,則系統會自動記憶下我們的設置,當再進入菜單進行選擇時,同樣會顯示相同的選項。
二 設計菜單的layout布局文件
首先,我們設計菜單的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中,自定義字體的方法很簡單,只需
要按如下步驟實現:
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();
- }
至此,全部代碼完成.