Android版本: 4.2
我正在开发一个android应用程序。我需要从可绘制文件夹中随机生成图像,并设置文本来说明选择了哪张卡。
我希望我的应用程序枚举每一张随机选择的卡片,没有重复,直到52张纸牌结束。
我怎样才能做到这一点呢?
我的xml代码是:
<ImageView
android:id="@+id/imageView"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_centerInParent="true"
android:scaleType="centerInside"
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="16dp" />
在我的抽屉里有52张不同名字的扑克牌图片。
public class MainActivity extends AppCompatActivity {
ImageView imageView;
TextView txt1;
Button button;
Random r;
Integer[] images = {
R.drawable.ace_of_hearts,
R.drawable.two_of_hearts,
R.drawable.three_of_hearts,
R.drawable.four_of_hearts,
...
我使用这个代码来生成随机的卡上的按钮点击和显示卡的名称。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
txt1 = (TextView) findViewById(R.id.mytext);
button = (Button) findViewById(R.id.btn1);
r = new Random();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//remove duplicates
do {
pickedImage = r.nextInt(images.length);
} while (pickedImage == lastPicked);
lastPicked = pickedImage;
//display random image
imageView.setImageResource(images[pickedImage]);
txt1.setText(images[pickedImage]);
}
});
}
发布于 2018-06-03 04:22:36
而不是选择一个随机的卡片,然后不得不处理重复的,一个更简单的方法可能是打乱数组,然后只从那里显示一个图像:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
txt1 = (TextView) findViewById(R.id.mytext);
button = (Button) findViewById(R.id.btn1);
List<Integer> shuffledCards = new ArrayList<>(Arrays.asList(images));
Collections.shuffle(shuffledCards);
final Iterator<Integer> iter= shuffledCards.iterator();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Stop once all the cards have been displayed
if (!iter.hasNext()) {
return;
}
image = iter.next();
imageView.setImageResource(image);
txt1.setText(image);
}
});
}
https://stackoverflow.com/questions/50660753
复制相似问题