版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《腾讯1+x安卓应用开发(中级)》教案
一、教案设计课题项目1任务1Kotlin简介及开发环境搭建课型理论课理论课时1课时实践课时1课时教学目标知识目标能力(技能)目标1.能够进行Kotlin安装包的下载与安装。2.能够进行Kotlin环境的搭建与配置。教学重点Kotlin泛型、Kotlin的反射、Kotlin中的协程。教学难点Kotlin的反射。教学内容1.Kotlin简介Kotlin是JetBrains公司在2010年推出的一种基于JVM的静态类型编程语言。Kotlin可以编译成Java字节码,也可以编译成JavaScript,以便在没有JVM的设备上运行。2017年,Google宣布Kotlin是Android官方开发语言。2.Kotlin在安卓开发时的优势使用Kotlin语言,对于安卓开发来说,主要有下面几个优势。减少空指针异常。减少代码量:同样的功能Kotlin开发要比Java少50%甚至更多。提升开发效率:增加了许多现代高级语言的语法特性,使得开发效率大大提升。实现与Java语言的无缝连接:Kotlin可以直接调用和使用Java编写的代码,也可以无缝使用Java第三方开源库3.Kotlin插件的安装在AndroidStudio中安装Kotlin开发环境,需要先安装Kotlin插件,安装步骤如下:(1)单击File|Setting,弹出setting面板,如图1-1-1所示。图1-1-1setting面板(2)单击Plugins,输入kotlin进行搜索,如图1-1-2。图1-1-2搜索kotlin(3)单击Install后等待安装完成即可。教学准备教材,PPT、教纲、教案参考资料/教学过程方法与手段教学备注【课堂导入】为什么需要安装Kotlin插件?默认情况下,AndroidStudio安装完成后,还不能使用Kotlin编写代码。要想使用Kotlin,必须安装Kotlin插件。【教学实施】6.2.1任务描述在AndroidStudio中安装Kotlin插件,搭建Kotlin开发环境,以便能在AndroidStudio中使用Kotlin编写代码。6.2.2问题引导为什么需要安装Kotlin插件?默认情况下,AndroidStudio安装完成后,还不能使用Kotlin编写代码。要想使用Kotlin,必须安装Kotlin插件。6.1.3知识准备Kotlin是一种基于JVM的静态类型编程语言。Kotlin是Android官方开发语言。使用Kotlin语言进行安卓开发的优势。6.1.4在线安装Kotlin插件6.1.5知识拓展下载安装Kotlin插件离线安装Kotlin插件【知识(技能)巩固练习】完成Kotlin插件的安装。【教学小结】讲授、演示课后作业与训练完成项目1课后练习对应的习题。教学反思
课题项目1任务2用Kotlin语言实现倒计时功能课型理论课理论课时2课时实践课时2课时教学目标知识目标能力(技能)目标1.能够掌握Kotlin基础语法,能掌握Kotlin类型与表达式。2.能够理解Kotlin泛型和注解。3.能够掌握Kotlin的反射。4.能够掌握Kotlin的协程。1.能够利用常见集成开发环境创建工程项目,并能实现程序正确编译和运行。2.能灵活使用Kotlin泛型、Kotlin的反射、Kotlin中的协程。教学重点Kotlin泛型、Kotlin的反射、Kotlin中的协程。教学难点Kotlin的反射。教学内容1.Kotlin基础语法(1)注释kotlin支持单行和多行注释。(2)函数定义①函数定义使用关键字fun,函数参数格式为:参数:类型。返回值类型的定义是在函数头后面加冒号:返回值类型。例如:funsum(a:Int,b:Int):Int{//Int参数,返回值Intreturna+b}②表达式可以作为函数体,函数返回值类型可以自动推断,例如:funsum(x:Int,y:Int)=x+ypublicfunsum(x:Int,y:Int):Int=x+y③无返回值的函数(类似Java中的void),有两种形式,一种是用Unit类型修饰,另外一种是直接省略不写,例如:fundoSomething(){}fundoSomething():Unit{}(3)可变长参数函数函数的可变长参数可以用vararg关键字进行标识,例如:funvars(varargv:String){for(strinv){print(str+"")}}//测试funmain(args:Array<String>){vars("aaa","bbb","ccc")//输出12345}程序运行后输出:aaabbbccc(4)lambda(匿名函数)lambda就是将一小段代码封装成匿名函数,以参数值的方式传递到函数中,供函数使用,例如:funmain(args:Array<String>){valmin:(Int,Int)->Int={x,y->//只能返回Int类型,最后一句表达式的返回值必须为Int//if表达式返回Intif(x<y){x}else{y}}print(min(1,2))}程序运行后输出:1上面的代码在main函数中定义了一个求最小值的匿名函数min。(5)定义常量与变量在kotlin中,变量与常量在定义的时候可以不用赋初始值,但是在使用前一定要初始化。在kotlin中,变量的定义使用关键字var,格式为:var<标识符>:<类型>=<初始化值>例如:vara:Int=12在kotlin中,常量的定义使用关键字val,格式为:val<标识符>:<类型>=<初始化值>例如:vala:Int=12Kotlin的编译器支持自动类型判断,即声明时可以不指定类型,由编译器判断。例如:vara=12(6)区间表达式区间表达式由具有操作符形式..的rangeTo函数辅以in和!in形成。区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。以下是使用区间的一些示例:for(iin1..4)print(i)//输出“1234”for(iin4..1)print(i)//什么都不输出if(iin1..10){//等同于1<=i&&i<=10println(i)}//使用step指定步长for(iin1..4step2)print(i)//输出“13”for(iin4downTo1step2)print(i)//输出“42”//使用until函数排除结束元素for(iin1until10){//iin[1,10)排除了10println(i)}2.Kotlin基本数据类型(1)基本数据类型Kotlin的基本数值类型包括Byte、Short、Int、Long、Float、Double等。(2)字符类型字符类型用Char描述,Kotlin中的Char不能直接和数字操作,Char必需是单引号'包含起来的。比如普通字符'0','a'。(3)布尔类型布尔用Boolean类型表示,它有两个值:true和false。(4)字符串类型字符串类型用String描述,可以通过[]获取某个字符,例如:vara:String="123"print(a[0])3.Kotlin泛型和注解泛型,即"参数化类型",将类型参数化,可以用在类,接口,方法上。(1)泛型类的基本使用泛型类指的就是在类定义的时候并不会设置类中的属性或方法中的参数的具体类型,而在类使用时再进行属性类型的定义。定义泛型类,就是在类名之后、主构造函数之前用尖括号括起的大写字母代表某种数据类型。在定义泛型类型的变量时,可以完整地写明类型参数,如果编译器可以自动推定类型参数,也可以省略类型参数。例如:(2)泛型函数的基本使用在定义泛型函数时,泛型函数的类型参数要放在函数名的前面,例如:fun<E>test(num:E):E{returnnum;}funmain(args:Array<String>){print(test<Int>(1))print(test<String>("hello"))}(3)Kotlin中的注解①注解的基础知识注解就是向代码中添加元数据。通过在类名前添加annotation来声明注解。Kotlin中有以下四种元注解(用来定义注解的注解):@Target:限定注解标记的目标(属性、方法、类、扩展等等)@Retention:限定注解是否存储到字节码文件中;在运行时通过反射是否可见(默认情况下以上两个条件均为真)@Repeatable:允许在同一个元素上重复使用同一个注解@MustBeDocumented:指定该注解是公有API的一部分,并且应该包含在生成的API文档中显示的类或方法的签名中。在Kotlin中定义一个注解类,需要使用annotation关键字。例如:@Target(AnnotationTarget.CLASS,AnnotationTarget.PROPERTY)@Retention(AnnotationRetention.RUNTIME)annotationclassValue通过定义,@Value注解可以用来修饰类和属性,并且这个注解在运行时可见,可以通过反射技术获取@Value注解的相关信息。例如:下图的例子中,@Value可以注解在类Stu和属性name,age上面。②带属性的注解在kotlin中,可以为注解添加属性。例如:上面的例子中,@Value具有属性value,在给类进行注解时,需要传递参数给属性,这些属性值一般只有在程序运算时通过反射技术获得得到才有意义。4.Kotlin的反射反射是指计算机程序在运行时(Runtime)可以访问、检测和修改它本身状态或行为的一种能力。下面对Kotlin中的反射技术进行一个简要介绍。(1)获取KClasskotlin的KClass和java的Class可以看作同一个含义的类型。可以通过两种方法获取类的KClass:①类名().javaClass.kotlin②类名::class例如:程序运行后输出:true在该例中通过两种方法获取Person的KClass。(2)通过反射创建对象在Kotlin中可以通过两种方法创建对象,这两种方法都需要对应的类提供无参构造函数。以上面的例子为例,创建Person对象:(3)通过反射获取对象的成员、方法等要通过反射技术获取对象的成员变量可以使用:KClass.declaredMemberProperties,获取成员方法通过KClass.declaredFunctions。下面的例子将对这两种操作进行演示:5、Kotlin中的协程协程(Coroutine)也叫微线程,也称为轻量级Thread,是一种新的多任务并发的操作手段。它是运行在单线程中的并发程序。能大幅度提高并发性能。协程开发包在kotlinx.coroutines中,这个包可以build.gradle中通过dependencies引入。如:dependencies{implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2")}(1)协程的启动协程的启动有多种,下面将对GlobalScope.launch()和runBlocking()两种方式进行介绍。1)方式一、GlobalScope.launchGlobalScope.launch创建的协程的生命周期受主应用程序的生命周期期限,如果主应用程序执行结束,由GlobalScope.launch创建的协程即使还没执行完毕,也会直接退出。①通过GlobalScope.launch创建一个协程②协程首先通过delay(1000L)非阻塞等待1秒,再输出World!信息。③在协程非阻塞等待的时候,主线程运行println("Hello,--->"+Thread.currentThread().name)④主线程Thread.sleep(2000),阻塞主线程2秒钟,等待协程完成任务。程序运行后输出:Hello,--->mainWorld!--->DefaultDispatcher-worker-1如果把Thread.sleep(2000)这行代码去掉,则程序执行结果是:Hello,--->main因为主线程输出hello信息以后就直接结束,而通过GlobalScope.launch创建的协程的生命周期和主线程一样,所以也跟着主线程结束。GlobalScope.launch是创建协程最常用的方式。2)方式二、runBlockingrunBlocking函数和launch函数的不同点是会阻塞调用者线程直到协程完成。①通过GlobalScope.launch创建一个协程A,A协程将在1秒后输出World信息。②主线程不受A协程的影响,继续往下执行,输出hello信息。③接着通过runBlocking创建了协程B,B协程中的代码delay(5000L),会阻塞主线程5秒,④在此期间A协程休息1秒后输出World,B协程在休息5秒以后继续运行,主线程也解除阻塞输出主线程运行结束。⑤runBlocking通常只用于启动最外层的协程,保证其他的协程顺利执行完任务。程序运行后输出:Hello,World!主线程运行结束(2)协程的取消如果主线程已经执行完毕,协程还在运行,协程会直接结束运行,因为协程的生命周期和主线程一样。如果要避免
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金融服务行业2025年资金筹措创新方案
- 资金申请与绿色金融2025年可持续性方案
- 2025年项目资金筹措与保障体系构建方案
- 淄博政府整治工作方案
- 酒店外观建设方案模板
- 国医堂样品店建设方案
- AI路径规划助力2025年城市交通拥堵解决方案分析报告
- 衢州专班实施方案
- 2026广西数据集团春季校园招聘备考题库附答案详解(精练)
- 2026贵州黔南州企事业单位人才引进268人备考题库参考答案详解
- 2026年社工初级综合能力真题及答案
- 2026湖北神农架林区公安局招聘辅警22人考试备考试题及答案解析
- 2025年江西省公安厅招聘警务辅助人员笔试真题(附答案)
- 浙商银行2026校园招聘无领导面试仿真题
- 2026浙江杭州市萧山区人民法院招聘14人笔试备考试题及答案解析
- 2026中国农业大学烟台研究院非事业编学生管理岗招聘3人考试模拟试题及答案解析
- 全民国家安全教育日知识普及课件
- (正式版)DB36∕T 1442.6-2022 《水利工程标准化管理规程 第6部分:农村水电站》
- 跆拳道训练体系
- 航天发射与卫星运维手册
- 2026年1月浙江省首考地理真题卷(附答案解析)
评论
0/150
提交评论