2013-08-31 2 views
1

Я пытаюсь использовать галерею изображений для своего меню приложений. Цель состоит в том, что когда пользователь нажимает на изображение, он отправит вас к определенному действию. Проблема в том, что я не знаю, как связать каждое изображение с каждым действием. Например, если вы нажмете на первое изображение, оно откроет игру, если вы нажмете на вторую, вы перейдете к параметрам приложения ... Как я могу это сделать?Использование галереи изображений в качестве меню

public class Carrusel extends Activity implements OnClickListener { 

ImageView lastClicked = null; 
int padding = 10; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.start); 
LinearLayout l; 
l = (LinearLayout) findViewById(R.id.carrusel); 
int[] images = new int[] { R.drawable.image1, R.drawable.image2, 
     R.drawable.image3,R.drawable.image4,R.drawable.image5}; 
for (int i = 0; i <5; i++) { 
    ImageView iv = new ImageView(this); 
    iv.setImageResource(images[i]); 
    iv.setPadding(padding, padding, padding, padding); 
    iv.setOnClickListener(this); 
    l.addView(iv); 
} 
} 

@Override 
public void onClick(View v) { 
    Intent i= new Intent (this, Flip3d.class); 
    startActivity (i); 

} 
} 

Последний «onClick» был тестом на то, что я пытался. Очевидно, что в этом случае все изображения открывают одну и ту же активность, вот что я хочу изменить.

ответ

1

Создайте на OnClickListener для каждого из ваших ImageViews.

iv.setOnClickListener (new OnClickListener() { 
    @Override 
    OnClick(View v) { 
    // start the activity you want 
    } 
}); 
+0

Я не знаю, как реализовать это решение в моем коде. Я пробовал, но это дает мне ошибки. Не могли бы вы помочь мне? – Fernandez6

0

Вы можете установить идентификаторы для своего изображения, которые могут использоваться в onClick, чтобы определить ваш вид.

protected void onCreate(Bundle savedInstanceState) { 
    // ... 
    for (int i = 0; i <5; i++) { 
     ImageView iv = new ImageView(this); 
     iv.setImageResource(images[i]); 
     iv.setPadding(padding, padding, padding, padding); 
     iv.setOnClickListener(this); 
     iv.setId(mIvIds[i]); 
     l.addView(iv); 
    } 
} 

public void onClick(View v) { 
    if (v.getId() == mIvIds[0]) { 
     Intent i= new Intent (this, Flip3d.class); 
     startActivity (i); 
    } else if (v.getId() == mIvIds[1]) { 
    // other stuff 
    } else if (v.getId() == mIvIds[2]) { 
    // ... 
    } 

} 

Но во-первых, вам нужно создать новые идентификаторы для mIvIds[]. В API17 для этой функции добавлен View.generateViewId(). Но если к этому onclick-слушателю присоединяются только ваши изображения, я думаю, что не должно быть проблем, если вы используете некоторые случайные целые числа (например, 1,2,3, ...)

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