重新学习一遍这本书,之前看过一遍忘记做笔记导致看了跟没看一样,十分可惜。
这30页的内容主要讲怎么创建一个Android项目,掌握日志工具的使用,Kotlin语言的简介,如何在Android Studio运行kotlin代码、变量哥挂不是更有、程序的逻辑控制。
一、创建一个Android程序
点击file->new->new project 选择这个Empty Activity直接创建就行
我这里安装的Android Studio 是2022.1.1
但我的Android Gradle Plugin Version和Grade Version用的是7.4.2和7.5
所以创建的项目会报错
原因:
下面是转载内容:
Android Studio 编译系统以 Gradle 为基础,并且 Android Gradle 插件添加了几项专用于编译 Android 应用的功能。虽然 Android 插件通常会与 Android Studio 的更新步调保持一致,但插件(以及 Gradle 系统的其余部分)可独立于 Android Studio 运行并单独更新。
我更换了sdk的版本,然后重新sync一下就能使用。
二、怎么看一个Android项目
首先看src下main文件夹下的AndroidManifest.xml文件(这个是整个Android项目的配置文件,在程序中定义的四大组件都需要在这个文件注册,另外还可以在这个文件中给应用添加权限声明)
第15行标注了Android项目运行的主Activity,按住ctrl键,鼠标左键点击.MainActivity会跳转到
MainActivity
MainActivity,点击按钮定位到当前选择打开的文件,在这里可以发现这个主Activity类继承了
AppCompatActivity(AppCompatActivity是Activity的子类),它是AndroidX提供的一种向下兼容的Activity,可以使Activity在不同系统版本中的功能保持一致性。Android程序的设计讲究逻辑和视图分离。,因此不推荐在这个类直接编写页面,而是在布局文件中编辑页面,然后再这个类中引入进来,程序第9行使用了setContentView方法,所以我们按住Ctrl和鼠标左键跳转到这个布局文件
在这个布局文件中发现了定义了Hello World的TextView,第一个程序中的Hello World就是在这定义的。
紧接着讲了res下的文件资源意思
drawable开头的文件夹 放图片
mipmap开头的文件夹 放应用图标
values开头的文件夹 放字符串、样式、颜色
layout开头的文件夹 放布局文件
然后在values文件夹下的strings.xml文件定义了一个新的应用程序名字符串,然后在AndroidManifest.xml文件引用,强调了
- 在代码中通过R.string.app_name可以获得该字符串的引用
- 在xml中通过@string/app_name可以获得该字符串的引用
三、Android的日志工具Logcat
Android Studio升级后这个开发工具没有了,所以这块略过
四、Kotlin语言简介
Kotlin是有JetBrains公司开发设计的,早在2011年公布了第一个版本,并在2012年开源,2013年发布了1.0正式版本。
然后学习变量、函数、和程序的逻辑控制(if条件语句,when条件语句)
在android studio建立kotlin,需要在MainActivity同级的包下建立
废话不多说,直接上代码
package com.czy.helloworld
fun main() {
println("Hello World")
var a = 10
a *= 10
println("a=" + a)
//使用两个数相加函数
val result = addTowNum(1, 11)
println("1+11=$result")
//两个数相减
val result2 = twoNumSub(10, 1)
println("10-1="+result2)
//两个数比大小
val largerNumber1 = largerNumber1(10, 2)
println("两个数比大小 第一种写法 java风格 10 与 2 最大的是 $largerNumber1")
val largerNumber2 = largerNumber2(55, 1)
println("两个数比大小 第二种写法 55 与 1 最大的是 $largerNumber2")
val largerNumber3 = largerNumber3(7, 1)
println("仔细发现value其实也是一个多余的变量,可以直接返回,这样能使代码更加简洁 7 与 1 最大的是 $largerNumber3")
val largerNumber4 = largerNumber4(9, 99)
println("两个数比大小 第三种写法 9 与 99 最大的是 $largerNumber4")
val largerNumber5 = largerNumber5(998, 9999)
println("第三种方法还可以直接压缩为一行代码 998 与 9999 最大的是 $largerNumber5")
}
//两个数相加
fun addTowNum(param1: Int, param2: Int): Int {
return (param1 + param2)
}
//两个数相减 first - second
fun twoNumSub(param1: Int,param2: Int) = (param1 - param2)
//两个数比大小 第一种写法 java风格
fun largerNumber1(num1:Int,num2:Int):Int{
var value = 0
if (num1>num2){
value = num1
}else{
value = num2
}
return value
}
/*
两个数比大小 第二种写法
Kotlin中的if相比于java有一个额外的功能,它是可以有返回值的,
返回值就是if语句每一个条件中最后一行代码的返回值
*/
fun largerNumber2(num1 :Int,num2:Int):Int{
val value = if (num1>num2){
num1
}else{
num2
}
return value
}
/*
两个数比大小 第二种写法
仔细发现value其实也是一个多余的变量,可以直接返回,这样能使代码更加简洁
*/
fun largerNumber3(num1 :Int,num2:Int):Int{
return if (num1>num2){
num1
}else{
num2
}
}
/*
两个数比大小 第三种写法
当一个函数只有一行代码时,可以省略函数体部分,直接将这一行代码使用等号串联在
函数定义的尾部
*/
fun largerNumber4(num1 :Int,num2:Int) = if (num1>num2){
num1
}else{
num2
}
/*
两个数比大小 第三种写法
第三种方法还可以直接压缩为一行代码
*/
fun largerNumber5(num1 :Int,num2:Int) = if (num1>num2) num1 else num2
package com.czy.helloworld
fun main() {
val score = getScore1("Tom")
println(score)
val score2 = getScore2("Jim")
println(score2)
}
/**
* 根据名字比较分数
* if版本
*/
fun getScore1(name:String) = if (name =="Tom") 86 else if(name =="Jimi") 56 else if (name == "Lilei") 75 else 0
/**
* 根据名字比较分数
* when版本 匹配值 -> {执行逻辑}
*/
fun getScore2(name:String) = when(name){
"Tom" -> 86
"Jim" ->100
"Lilei" -> 45
else -> 0
}
kotlin代码的感想:
1、可以完全兼容java风格的代码,如果不想要kotlin语言,直接有java写也是能运行的。
2、kotlin的语言风格十分简便和灵活。它有自动推导对象数据类型
3、val声明常量, 引用不可变;var声明变量,可以被重新赋值,引用可以变。
java和kotlin数据类型对照关系
java基本数据类型 | kotlin对象数据类型 | 数据类型说明 |
int | Int | 整形 |
long | Long | 长整型 |
short | Short | 短整型 |
float | Float | 单精度浮点型 |
double | Double | 双精度浮点型 |
boolean | Boolean | 布尔型 |
char | Char | 字符串型 |
byte | Byte | 字节型 |
引用博客:
(4条消息) Java类型与Kotlin类型对应关系_kotlin和jdk关系_WongKyunban的博客-CSDN博客