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

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

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

Представления образуют иерархию . Создайте 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 Но это должно помочь вам начать работу в правильном направлении.