我正在尝试将图片库用于我的应用程序菜单。目标是当用户点击图像时,它会将您发送到特定活动。问题是我不知道如何将每个图像与每个活动相关联。例如,如果您单击第一个图像,它会打开一个游戏,如果您点击第二个图像,则转到应用程序选项...我该怎么办?
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”测试了我的尝试。显然在这种情况下,所有图像都打开相同的活动,这就是我想要改变的。
答案 0 :(得分:1)
在OnClickListener上为每个ImageView创建。
iv.setOnClickListener (new OnClickListener() {
@Override
OnClick(View v) {
// start the activity you want
}
});
答案 1 :(得分:0)
您可以为您的imageview设置ID,可以在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[]
生成新的ID。在API17中为此功能添加了View.generateViewId()。但是,如果只有你的图像视图附加到该onclick监听器,我认为如果你使用一些随机整数(例如1,2,3,......)应该没有问题