安卓学习笔记之四:Android Studio_骰子案例2(kotlin版本)

本文介绍了如何在Android项目中改进骰子应用,添加骰子图片,使用if和when语句控制显示,以及优化代码以使用资源引用。开发者学习了如何导入图片,配置ImageView,以及将字符串转换为资源。
摘要由CSDN通过智能技术生成

上一个骰子案例,只是随机产生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。

运行效果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值