在Kotlin中选择不同的随机图像
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Kotlin中选择不同的随机图像相关的知识,希望对你有一定的参考价值。
我有一个关于Kotlin代码的问题,我有一个任务,我必须从一个数组中随机生成图像,但问题是它们必须彼此不同。有四个图像视图,在点击它们之后,其中一个视图必须随机改变其来源。我写了这段代码,但图像并不明显。
class MainActivity : AppCompatActivity(), View.OnClickListener {
private val images = arrayOf(
R.mipmap.fruit,
R.mipmap.banana,
R.mipmap.watermelon,
R.mipmap.apricot,
R.mipmap.cherry,
R.mipmap.strawberry,
R.mipmap.melon,
R.mipmap.kiwi
)
private lateinit var imageViews:Array<ImageView>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
init()
}
private fun init() {
imageViews = arrayOf(imageView_1, imageView_2, imageView_3, imageView_4)
imageView_1.setOnClickListener(this)
imageView_2.setOnClickListener(this)
imageView_3.setOnClickListener(this)
imageView_4.setOnClickListener(this)
}
override fun onClick(v: View?) {
randomImageView().setImageResource(randomImage())
}
private fun randomImage() = images[(images.indices).random()]
private fun randomImageView() = imageViews[(imageViews.indices).random()]
}
答案
我想让 imageViews
的地图,还可以跟踪视图上设置了哪些图像。然后,你可以通过从选择池中删除使用中的图像,从减少的图像集中选择你的随机图像。
private val imageViews = MutableMap<ImageView, Int?>()
// in init ...
imageViews.putAll(listOf(imageView_1, imageView_2, imageView_3, imageView_4).map { it to null })
// ...
override fun onClick(v: View?) {
val view = randomImageView()
val image = randomImage()
view.setImageResource(image)
imageViews[view] = image
}
fun randomImage() = (images - imageViews.values).random()
以上是关于在Kotlin中选择不同的随机图像的主要内容,如果未能解决你的问题,请参考以下文章