2015-05-20 1 views
0

Я строю простой Удар моль клон, и у меня возникли проблемы с выяснением того, как сделать мой макет. Я не играл с Android dev с тех пор, как Gingerbread был новым, и я никогда не пытался писать игру раньше, так что простите меня, если это вопросы newb, но я застрял и Googling часами сейчас, и я не получаю ответы.GridLayout или GridView лучше ссылаться на статические предметы?

я в основном получил 3x4GridLayout с 12 невидимую моль ImageView объявлен в layout.xml файле, и у меня возникают проблемы, выяснить, как я могу создать ссылки на объекты в своем коде, от того, что я создал в XML так Я могу сделать их случайным образом появляться и исчезать и обрабатывать события пользовательского касания.

Я вижу много информации о GridViews и Adapter объектов используются для создания ссылок из XML и обрабатывать событие прикосновения, но я не знаю, как это сделать с помощью GridLayout. Должен ли я переключиться на использование GridView в LinearLayout, или есть какая-то невероятно простая вещь, которую мне не хватает?

Кроме того, было бы целесообразнее реализовать onItemClickedListener() в моем подклассе Activity или моем подклассе View? Я немного смущен тем, как мой подкласс View относится к макету XML. Может быть, я просто слишком усложняю это?

Спасибо за помощь, ребята. Вот мой layout.xml, если это поможет.

<?xml version="1.0" encoding="utf-8"?> 
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:columnCount="3" 
android:rowCount="4" 
android:useDefaultMargins="true" 
android:background="@drawable/grass_bg" 
android:id="@+id/wam_view_layout"> 
<ImageView 
    android:id="@+id/mole1" 
    android:visibility="invisible" 
    android:layout_width="120dip" 
    android:layout_height="140dip" 
    android:contentDescription="@string/mole_description" 
    android:layout_gravity="center" 
    android:scaleType="fitCenter" 
    android:src="@drawable/mole" /> 
<ImageView 
    android:id="@+id/mole2" 
    android:visibility="invisible" 
    android:layout_width="120dip" 
    android:layout_height="140dip" 
    android:contentDescription="@string/mole_description" 
    android:layout_gravity="center" 
    android:scaleType="fitCenter" 
    android:src="@drawable/mole" /> 

<!--pattern continues until mole12--> 

</GridLayout> 
+0

Добавить ваш макет XMLs. Некоторый код, который вы поставили, например, используя 'GridView' – Mithun

ответ

0

ли что-то подобное в вашей деятельности:

private ImageView imageMole1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.layout); 

    imageMole1 = (ImageView) findViewById(R.id.mole1); 
    imageMole1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      // handle click here e.g. call a method 
      // void onMoleClicked(int moleId) 
     } 
    }); 
} 

Для изменения используйте отображаемое изображение например .:

imageMole1.setImageResource(R.drawable.mole_gone); 
+0

Спасибо! Так что мне вообще не нужно создавать подкласс Adapter? – jamzsabb

+0

Вы можете использовать его, но я думаю, это не обязательно в вашем случае. GridView имеет лучшую производительность для большого количества элементов. Также вам нужен только один клик для просмотра сетки. Более того, если у вас есть подходящая модель, адаптер сетки позволяет легко обновлять ваш просмотр. Итак, до вас и ваших навыков программирования ... – Clemens

Смежные вопросы