如何随机设置ImageButton?
我有150张图片,我可以如何将它们中的一个设置为ImageButton,具体取决于随机生成的ID? [代码更新】 我开始这样的:如何随机设置ImageButton?
int x, y, z,resID;
String sID;
Random rand;
ImageButton SButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play_);
rand = new Random(System.currentTimeMillis());
SButton = new ImageButton(this);
SButton.setVisibility(View.VISIBLE);
}
public void Start(View view) {
SButton = (ImageButton) view;
x = rand.nextInt(3);
y = rand.nextInt(8);
z = rand.nextInt(10);
sID = "shape_" + x + y + z;
resID =getResources().getIdentifier(sID,"drawable","com.packagename");
SButton.setImageResource(resID);
}
与为我工作的代码更新
您可以通过下面的代码做到这一点:
int resource = getResources().getIdentifier(myID, "drawable", "com.your.package");
PS:取从名称中删除“R.id.
”。
我已更新我的代码,谢谢@Atabtab Hussain –
它工作了weel,但它给出了这个错误** getSlotFromBufferLocked:未知的缓冲区错误** @Aftab Hussain –
显然,这是Marshmellow的一个公开问题。看看'Itai Hanski'的回答在 http://stackoverflow.com/questions/32561479/android-studio-getslotfrombufferlocked-unknown-buffer-error –
重命名像image1,image2,...,image150的yuor图像。
生成在1 150之间(包括两端)的随机数。下面的代码
-
用它来获得图像资源ID。 (使用“纹理贴图”,而不是“绘制”如果你放在纹理贴图文件夹中的图片)
String myID = "image"+ generatedRandomNumber; int resource = getResources().getIdentifier(myID, "drawable", "com.your.package");
使用该资源ID来设置图像
ImageButton
。
所有图片都有自己的ID,这就是他们的名字:'R.drawable.image1','R.drawable.image2'等。为什么你需要他们有随机ID? – JonZarate
正如我所说我是新来的Android,对不起... [更新了问题]我有我的随机选择的ID如何设置图像按钮完全一样随机生成的ID? @JonZarate –
你想用ImageButton的随机ID做什么? – tash