Статьи

Android Tutorial: игровое меню с пользовательским шрифтом

Разработка игр для Android ГОРЯЧА! Я действительно получаю много писем / запросов на более ориентированный на игру урок. Так что вот только для всех начинающих разработчиков игр для Android! Этот пост расскажет, как сделать простое игровое меню в Android. Как всегда исходный код находится внизу! Хотите узнать больше о разработке игр? Существует тег, который содержит все сообщения о разработке игр

Вот список функций, которые будут иметь готовое меню:

  • хороший фон
  • пользовательский шрифт
  • стиль для создания чистых кнопок меню
  • подменю с настройками для вашей игры
  • настройки будут сохранены в постоянном хранилище (с SharedPreferences)

Вот изображение полного меню.

 

 

Сначала я покажу вам, ребята (и галлы) макет. Поскольку мы хотим иметь хороший фон, мы используем RelativeLayout, чтобы убедиться, что у нас могут быть перекрывающиеся «Слои». Макет довольно чистый.

<?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">      <ImageViewandroid:src="@drawable/menuback"android:layout_width="fill_parent"android:layout_height="fill_parent" />      <LinearLayoutandroid: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>

Как вы могли заметить; все TextViews имеют определенный стиль. В этом проекте есть 2 стиля, и оба очень похожи. В стиле мы определяем атрибуты, которые будут иметь все кнопки. это гарантирует, что когда мы меняем 1 кнопку, мы меняем все кнопки!

Вот определение стиля MenuFont:

<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>

Теперь у нас есть макет и стиль для кнопок. Теперь нам нужно только реализовать наш собственный шрифт, и дизайн для меню сделан.

 

Реализация собственного шрифта довольно проста. Я планирую вещи, которые нам нужно сделать.

  1. Мы ищем в Интернете шрифт
  2. Поместите это в нашу папку активов
  3. Создайте TypeFace в нашем коде
  4. Примените TypeFace к TextViews

Я думаю, вы можете выяснить 1-го и 2-го в списке самостоятельно. Так что плохо помогите с кодом.

Вот как вы привязываете пользовательский шрифт к TextView:

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

Да, это так просто!

Мы хотим убедиться, что пользователю не нужно каждый раз устанавливать настройки. Нашу «игру» нужно сохранить где-нибудь, кроме как сохранить! Для этого мы будем использовать SharedPreferences . Вот немного информации о них (из официальных документов Android):

Класс  SharedPreferences предоставляет общую платформу, которая позволяет сохранять и извлекать постоянные пары ключ-значение примитивных типов данных. Вы можете использовать SharedPreferences для сохранения любых примитивных данных: логических значений, чисел с плавающей запятой, целых, длинных и строк. Эти данные будут сохраняться в течение сеансов пользователя (даже если ваше приложение будет убито).

Это явно правильное решение проблемы. Вот реализация кода. Сначала нам нужно получить настройки. Если значение отсутствует, мы можем указать значение по умолчанию:

private boolean[] settingsHolder = new boolean[4];private void getSettings() {SharedPreferences settings = getSharedPreferences(MenuActivity.PREFS_NAME, 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);}

логический массив будет местом для сохранения наших настроек. В нашей игре мы можем призвать к этому. Далее идет размещение / перезапись настроек. Мы сделаем это в нашем onClickListener в меню настроек. Вот этот кусок кода!

@Overridepublic 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();}

Ну, вот и все! Для более глубокого изучения вы можете просмотреть исходный код.

Для получения дополнительной информации вы можете проверить оригинальную статью