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

本文是学习youtube上Android Studio教程一个手机编程案例的实践。

一个简单的android程序,实现简单的摇骰子,只有一个按钮。

版本为Android Studio Hedgehog 2023。

原教程视频链接如下:

https://www.youtube.com/watch?v=B0hYgONuh4g&list=PLsEC4qT8YxBLvNJBs1a_hHd2iwSrHieKu&index=4

1. 创建一个新的项目 

 项目名为Dice Roller, 语言为kotlin, 选择合适的仿真设备。

 2 编译后成功,初步演示

编译成功 

主活动布局文件activity_main.xml

这里看到只有一个TextView,在屏幕中间显示Hello World!

主活动程序MainActivity.kt

MainActivity()类中OnCreate()方法启动函数SetContentView(),载入资源(res)文件包中的主活动布局文件activity_main.xml。

编辑主活动布局文件,拖动一个按钮button到中间。

TextView和Button是ConstraintLayout子项,可以在Attributes中调节按钮水平和垂直方向上的约束。

使用硬式码字串(HardCoded Text)存在告警

硬编码的字符串按钮,应该使用@字符串资源

直接在布局文件中硬编码文本属性是不好的,原因有几个:

  • 在创建配置变体(例如横向或纵向)时,必须重复实际文本(并在进行更改时保持最新状态)
  • 不能仅通过为现有的字符串资源添加新的翻译来将应用程序翻译为其他语言。有一些快速修复程序可以自动将这个硬编码的字符串提取到资源查找中。

使用quick-Fixes进行修正。 

写入按钮的文本,ROLL。

改变TextView文字的大小,选中 Hello Word,在attributes中搜索textsize,由14sp改为34sp,在Common Attributes清空文字,工具文字为“1”。

可以在activity_main.xml中看到TextView的如下变化。

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="34sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="1" />

 工具文字是为开发人员使用的,“1”不会显示到画面中。

3. 设计主活动程序,按ROLL,在其上部出现1~6随机数字。

在主活动程序MainActiivity.kt中增加代码,使用findViewByID找到Button的ID, 调用按钮的点击监听方法setOnClickListener(),采用Lambda表达式,设计骰子的蓝图类Dice() ,在TextView“1”的地方显示1~6的随机数。

修改后的MainActiivity.kt文件如下。

package com.example.diceroller

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import org.w3c.dom.Text

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //本案例中使用findViewById找到ui
        /* Android 会自动将ID号码指派给应用程序的资源
        资源ID的形式为R.<type>.<name>
        对于View的ID <type>为id, 例如R.id.button
        *
         */
        val rollButton: Button = findViewById(R.id.button)
        rollButton.setOnClickListener {
            //建立新的Dice物件执行个体
            val dice = Dice(6)
            val diceRoll = dice.roll()
            val resultTextView: TextView = findViewById(R.id.textView)
            resultTextView.text = diceRoll.toString()
        }
    }
}
/*
*骰子蓝图 Class Dice
* 具有滚动的功能 fun roll()
 */
class Dice(val numSides: Int) {
    fun roll(): Int{
        return (1..numSides).random()
    }

}

 运行后的效果:

调用Toast.makeText()方法即可建立内含文字“Dice Roller!"的Toast, 建立新的Dice物件执行函数diceroll()

package com.example.diceroller

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import org.w3c.dom.Text

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //本案例中使用findViewById找到ui
        /* Android 会自动将ID号码指派给应用程序的资源
        资源ID的形式为R.<type>.<name>
        对于View的ID <type>为id, 例如R.id.button
        *
         */
        val rollButton: Button = findViewById(R.id.button)
        rollButton.setOnClickListener {
            //调用Toast.makeText()即可建立内含文字“Dice Roller!"的Toast
            Toast.makeText(this,"Dice Roller!",Toast.LENGTH_LONG).show()
            rollDice()  //执行滚动功能
        }

    }
    private fun rollDice(){
        //建立新的Dice物件执行函数
        val dice = Dice(6)
        val diceRoll = dice.roll()
        val resultTextView: TextView = findViewById(R.id.textView)
        resultTextView.text = diceRoll.toString()

    }
}
/*
*骰子蓝图 Class Dice
* 具有滚动的功能 fun roll()
 */
class Dice(val numSides: Int) {
    fun roll(): Int{
        return (1..numSides).random()
    }

}

运行后的效果:

  • 24
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: 818页 正文语种: 简体中文 开本: 16 ISBN: 9787115264305 条形码: 9787115264305 商品尺寸: 26 x 18.4 x 3.8 cm 商品重量: 1.3 Kg 编辑本段 内容简介 《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合Android与Google强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。 《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来介绍新的开发技术,特别是新增加了第11章来专门介绍HTML5技术在Android移动设备里的应用,相信当下两个热门技术的交汇会碰撞出不一样的火花。 《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK开发范例大全(第3版)》:全新2.3以上版本精彩范例。新增HTML5手机应用程序范例。影音功能大突破,领先业界的影音播放功能详解。易于阅读的架构设计,边看边学,每个范例均搭配步骤及完成画面。每个范例后面均有扩展学习,在学习范例应用的同时延伸思考。汲取专家经验,指引入门捷径。 移动网络设备(MID,Mobile Internet Device)的发展趋势锐不可当,其中以智能手机最受瞩目。 《Google Android SDK开发范例大全(第3版)》采用范例集的形式,由浅入深地带领Google Android SDK初学者,以及具备Java基础的程序设计人员逐步掌握开发MID的能力。同时,书中200多个范例均可作为开发样板,以此抛砖引玉,进而拓展程序设计人员开发MID的无限可能。精彩范例,原创展现。 更炫的移动设备人机界面配置:豪华Widget、Home Screen App Widgets、隐藏式抽屉-Sliding Drawer等闪亮登场! 完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的整合:网络搜索、联系人、音乐、应用程序、定制手机文件管理、记忆卡I/O存取、双向短信、闹钟服务、开机程序、来电通信互动、拜年短信、信息提醒、电池电量显示、进度显示、取得应用程序信息等。 超酷的娱乐多媒体设计:触控移动事件、建立手势、手势判断控制、屏幕保护程序、启动动画、mp3播放器、3gp影片播放、相机预览拍照、自动对焦、调整音量、信息指令遥控手机、录音控制、自定义动画按钮等 Web Service存取服务:内嵌网页浏览器、Ajax网页特效、手机气象局、网络播放mp3、网络安装apk程序、远程下载手机铃声、XML-RPC移动博客发布器、手机RSS阅读器、地震速报、网页快照等。 完备的Google网络服务:Google语音搜寻、Google远程账号登录、Google Search API、Google Chart API、Google Picasa手机相册、Google Translate API整合等。 Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身计时、QR Code二维条码生成器、手机OR Code扫描仪、热量骰子杯筊、正妹墙相簿浏览器、You Tube影片FLV文件下载器等。 HTML5结合Mobile:控制手机
基本信息 Google Android SDK开发范例大全(第3版) 作者:王世江(改编), 佘志龙(作者), 陈昱勋(作者), 郑名杰(作者), 等(作者) 出版社: 人民邮电出版社; 第3版 (2011年11月1日) 丛书名: 移动开发系列丛书 平装: 818页 正文语种: 简体中文 开本: 16 ISBN: 9787115264305 条形码: 9787115264305 商品尺寸: 26 x 18.4 x 3.8 cm 商品重量: 1.3 Kg 编辑本段 内容简介 《Google Android SDK开发范例大全(第3版)》在上一版的基础上,以Android手机应用程序开发(采用Android SDK 2.3.3)为主题,超过200多个范例全面且深度地整合了手机、网络及服务等多个开发领域,为读者提高程序设计能力提供了很大的帮助。 全书共分11章,主要以范例集的方式来讲述Android的知识点,详细介绍了开发Android的人机交互界面、Android常用的开发控件、Android手机收发短信等通信服务、开发Android手机的自动服务功能和娱乐多媒体功能以及整合Android与Google强大的网络服务等内容。随书光盘中包括了所有范例的程序代码。 《Google Android SDK开发范例大全(第3版)》继承前两版由浅入深的方式,范例总数由原先的160多个增加到了200多个,在用户交互界面、手机控件、交互式通信服务、手机自助服务、娱乐多媒体等方面均增加了相应的范例来介绍新的开发技术,特别是新增加了第11章来专门介绍HTML5技术在Android移动设备里的应用,相信当下两个热门技术的交汇会碰撞出不一样的火花。 《Google Android SDK开发范例大全(第3版)》内容由Android的基础知识到实际开发应用,结构清晰、语言简洁,非常适合Android的初学者和Android的进阶程序开发者阅读参考。 编辑本段 编辑推荐 《Google Android SDK开发范例大全(第3版)》:全新2.3以上版本精彩范例。新增HTML5手机应用程序范例。影音功能大突破,领先业界的影音播放功能详解。易于阅读的架构设计,边看边学,每个范例均搭配步骤及完成画面。每个范例后面均有扩展学习,在学习范例应用的同时延伸思考。汲取专家经验,指引入门捷径。 移动网络设备(MID,Mobile Internet Device)的发展趋势锐不可当,其中以智能手机最受瞩目。 《Google Android SDK开发范例大全(第3版)》采用范例集的形式,由浅入深地带领Google Android SDK初学者,以及具备Java基础的程序设计人员逐步掌握开发MID的能力。同时,书中200多个范例均可作为开发样板,以此抛砖引玉,进而拓展程序设计人员开发MID的无限可能。精彩范例,原创展现。 更炫的移动设备人机界面配置:豪华Widget、Home Screen App Widgets、隐藏式抽屉-Sliding Drawer等闪亮登场! 完整的手机数据存取功能:铃声模式设置、震动控制、WiFi服务、屏幕旋转、电池计量、温度测量、电信网络信息、SIM卡信息、拨打电话、短信解析、通讯录联系人、电子罗盘、屏幕手写等手机控制功能。 系统服务及研发的整合:网络搜索、联系人、音乐、应用程序、定制手机文件管理、记忆卡I/O存取、双向短信、闹钟服务、开机程序、来电通信互动、拜年短信、信息提醒、电池电量显示、进度显示、取得应用程序信息等。 超酷的娱乐多媒体设计:触控移动事件、建立手势、手势判断控制、屏幕保护程序、启动动画、mp3播放器、3gp影片播放、相机预览拍照、自动对焦、调整音量、信息指令遥控手机、录音控制、自定义动画按钮等 Web Service存取服务:内嵌网页浏览器、Ajax网页特效、手机气象局、网络播放mp3、网络安装apk程序、远程下载手机铃声、XML-RPC移动博客发布器、手机RSS阅读器、地震速报、网页快照等。 完备的Google网络服务:Google语音搜寻、Google远程账号登录、Google Search API、Google Chart API、Google Picasa手机相册、Google Translate API整合等。 Google Map应用:GPS定位、规划导航路径、GPS Google地图、地址反查地理坐标等卫星全球定位实例。 创意程序设计:即时动态桌面、电蚊香、转转轮盘、任务管理器、中英发音字典、手机手电筒、GPS轨迹记录器、女性贴身计时、QR Code二维条码生成器、手机OR Code扫描仪、热量骰子杯筊、正妹墙相簿浏览器、You Tube影片FLV文件下载器等。 HTML5结合Mobile:控制手机

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值