Экран выбора уровня, например, «Башня фермы», «Злые птицы», «Отрезать веревку» и т. Д.?

Я хочу создать экран уровня для моей игры, подобный тем, что есть в Angry Birds, Farm Tower и Cut the Rope (часть, где вы выбираете миры, или часть, похожая на виджет галереи). Я хотел знать, что это самый простой способ атаковать это.

Как мне изменить вид Gallery чтобы работать для этого?

Solutions Collecting From Web of "Экран выбора уровня, например, «Башня фермы», «Злые птицы», «Отрезать веревку» и т. Д.?"

Представления образуют иерархию . Создайте Gallery GridView .

Если вы хотите адаптировать код из учебника галереи, измените ImageView на LevelSetView и создайте LevelSetAdapter который расширяет BaseAdapter и переопределяет его метод getView . Вот начало.

 public class HelloLevelsGalleryActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Gallery g = (Gallery) findViewById(R.id.gallery); g.setAdapter(new LevelSetAdapter(this)); } 

Понять лучше адаптеры: ссылку или это видео через 2 минуты.

Кроме того, здесь задавался вопрос.

Вот идея создания селектора уровней с использованием представления Gallery .

Давайте рассмотрим этот пример, чтобы у вас была база кода: http://developer.android.com/resources/tutorials/views/hello-gallery.html

Таким образом, наверху вы будете иметь свои экраны уровня. Когда пользователь нажимает на нее, этот метод запускается (взято прямо из примера).

 gallery.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView parent, View v, int position, long id) { startLevel(position); } }); 

Возможно, ваш startLevel будет выглядеть примерно так:

 public void startLevel(int position){ Resources res = getResources(); String[] levels = res.getStringArray(R.array.level_classes); try{ Intent i = new Intent(this, Class.forName(levels[position])); startActivity(i); } catch (ClassNotFoundException e) { e.printStackTrace(); } } 

Опять же, очень простой пример, поскольку я понятия не имею, как вы храните свои уровни, если вы используете базу данных или нет, и т. Д. Кроме того, ваши классы для каждого уровня, вероятно, будут находиться в разных пакетах (например, com.game. Levelone, com.game.leveltwo), и вам нужно будет импортировать пакеты классов, чтобы не получить ClassNotFoundException Но это должно помочь вам начать работу в правильном направлении.