上一个骰子案例,只是随机产生1~6的数字。这里对其稍作改进,增加骰子1~6点数图片,并练习if 和when。
导入可绘制对象
选中主活动页面布局文件activity_main.xml,打开资源管理器(Resource Manager) 导入(+)可绘制对象(Import Drawables)
这里有六个图片,分别对应骰子的1~6点数。
这六个图片文件事先做好,找到对应的目录,直接导入即可
在项目视图上看到增加了6个图片文件在res->drawable目录下:
添加图片视图到指定位置
选择第一张图片
配置其属性参数:
在按钮下方增加文本“lucky number”
当按钮点出6点时出现,适当调整其位置大小(这里选用24dp),删除其文本,工具文本设置为lucky number,其ID为textView2。
更新滚动骰子方法rollDice() 代码
定义一个图片变量luckyTextView,通过findViewById() 找到它。定义一个幸运数字变量LuckNumber =6,当随机数字等于幸运数字6,文本显示“Lucky Number”。
仿真效果:
文本 “Lucky Number”会和幸运数字6同时出现,但之后不会消失。
增加else语句,在其他数字,显示空白,即可达到预期效果。
更新后的方法rollDice()的代码如下
private fun rollDice(){
//建立新的Dice物件执行函数
val dice = Dice(6)
val diceRoll = dice.roll()
val resultTextView: TextView = findViewById(R.id.textView)
resultTextView.text = diceRoll.toString()
val luckyTextView: TextView = findViewById(R.id.textView2)
val luckyNumber= 6
if(luckyNumber == diceRoll){
luckyTextView.text = "lucky number!"
}
else{
luckyTextView.text=""
}
}
增加字串安卓资源
这里有一个告警,提示“字符串文字无法翻译,建议用安卓资源替换”
点击More actions,选择提取字符串资源
资源名字为变量LuckyNumber
代码自动更新为:
if(luckyNumber == diceRoll){
luckyTextView.text = getString(R.string.LuckyNumber)
}
同时 Android Studio自动增加了android资源。
图片设计,练习使用if和when表达式
图片的ID为ImageView。
定义图片变量diceImage,对应随机数字显示相应的骰子图片。
可以用if...else语句,但选择when()语句比较合适。
val diceImage: ImageView = findViewById(R.id.imageView)
/* if(diceRoll==1){
diceImage.setImageResource(R.drawable.dice_1)
}
else if(diceRoll ==2){
diceImage.setImageResource(R.drawable.dice_2)
}*/
when(diceRoll){
1-> diceImage.setImageResource(R.drawable.dice_1)
2-> diceImage.setImageResource(R.drawable.dice_2)
3-> diceImage.setImageResource(R.drawable.dice_3)
4-> diceImage.setImageResource(R.drawable.dice_4)
5-> diceImage.setImageResource(R.drawable.dice_5)
6-> diceImage.setImageResource(R.drawable.dice_6)
}
进一步优化代码,相同的方法diceImage.setImageResource()代码重复,定义新的整形变量drawableResource替代。
//相同的逻辑只需使用when表达式
val drawableResource: Int = when(diceRoll){
1-> R.drawable.dice_1
2-> R.drawable.dice_2
3-> R.drawable.dice_3
4-> R.drawable.dice_4
5-> R.drawable.dice_5
else-> R.drawable.dice_6
}
diceImage.setImageResource(drawableResource)
链接手机,实际运行
作者在这里建立新的diceroller2项目,仿真设备选择 Small Phone API19, 版本选择Android 4.4 (“KitKat”)|x86。
运行效果: